It is currently Thu Dec 14, 2017 12:09 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 14 posts ] 
Author Message
PostPosted: Mon Nov 28, 2016 10:25 pm 
Offline
User avatar

Joined: Sun Jan 25, 2015 6:51 pm
Posts: 77
Location: Tokyo
I'm looking in to this, is there a massive technical difference between a normal NES rom style project and an FDS project?

_________________
twitter: http://twitter.com/hawkun
Pirate Pop Plus - gameboy styled game for 3DS, WiiU & Steam


Top
 Profile  
 
PostPosted: Mon Nov 28, 2016 10:32 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5898
Location: Canada
I don't think it's that different than building regular NES code.

You could create a cc65 linker config that would build an FDS file instead of an NES file, and otherwise it's kind of just writing for a "special" mapper.


Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 12:25 am 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6521
Location: Seattle
Massive difference? No.

The biggest difference is the change in memory handling: hardware cartridges are always "make 2ⁿ byte slice #x of memory available starting at address y·2ⁿ", while the FDS instead supports arbitrary (and nonuniform) sized slices and arbitrary starting locations.

If you're planning on making an NROM class thing, it's probably equivalent. But if you actually use the FDS filesystem beyond just the initial load and for save games, you might want a different workflow involving making all the individual files and then compiling them together.


Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 6:39 am 
Offline

Joined: Tue May 28, 2013 5:49 am
Posts: 928
Location: Sweden
I made a simple FDS program that loads some graphics and initializes palette and nametables but doesn't turn on the PPU. It just plays a note on the square 1 channel for testing. It doesn't load anything beyond the initial load or anything so it's basically an NROM on a single disk side.

I used asm6, and it doesn't have a linker or anything AFAIK, so to solve the arbitrary starting locations problem I assembled each disk file separately (I call the assembled files "file0.o", "file1.o" and so on since they basically work like object files), then I include them in a "header.asm" source file (which contains all the disk- and file-headers) using the .incbin directive at the proper locations. Finally I assembled the "header.asm" last into an FDS image.

Maybe there is a better way?



Edit: BTW there is a way to trick the BIOS to skip the Kyodaku screen so you can boot faster, but I haven't tried it and I didn't want to do it in a basic example template.
Oh and the FDS_HOOK subroutine was written per Chris Covell's recomendations, but I'm not sure why it's needed. I guess those values it reinitializes could be overwritten somehow.


Attachments:
File comment: Famicom Disk System Image Template using asm6
fdstemplate.7z [30.62 KiB]
Downloaded 63 times
Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 6:54 am 
Offline
User avatar

Joined: Sun Dec 12, 2010 10:27 pm
Posts: 298
Location: Hong Kong
A few years back, I'd tried converting my short demo to FDS.
I've just attached the archived source from my HDD. It's been a while so I haven't checked the integrity of the files, but just drop asm6.exe into the same folder as the files and launch the batch file and things should be done.
Instead of using copy/b actually one may also use asm6 itself to combine the files together (by using incbin and db for header stuff and the like).


Attachments:
fdsloom.7z [7.78 KiB]
Downloaded 56 times
Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 7:09 am 
Offline

Joined: Sun Mar 19, 2006 9:44 pm
Posts: 924
Location: Japan
Pokun wrote:
Edit: BTW there is a way to trick the BIOS to skip the Kyodaku screen so you can boot faster, but I haven't tried it and I didn't want to do it in a basic example template.

Once you have a working program and want to try it, make a new [CODE] file on the disk that gets loaded last upon bootup, whose load address is $2000. It should be about 256 bytes long, and have these 8 bytes repeating:

$90 00 00 00 00 00 00 00

The FDS BIOS/Copyright screen will be skipped.

_________________
http://www.chrismcovell.com


Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 10:26 am 
Online

Joined: Sun Apr 13, 2008 11:12 am
Posts: 6521
Location: Seattle
ccovell wrote:
[CODE] file on the disk that gets loaded last upon bootup, whose load address is $2000. It should be about 256 bytes long, and have these 8 bytes repeating:

$90 00 00 00 00 00 00 00
Does that effectively just enable NMIs? and why 32-ish repeats?


Top
 Profile  
 
PostPosted: Tue Nov 29, 2016 1:45 pm 
Offline
User avatar

Joined: Sun Sep 19, 2004 10:52 pm
Posts: 361
Location: UT
To keep the BIOS busy until the next NMI hits, I presume.


Top
 Profile  
 
PostPosted: Wed Nov 30, 2016 2:12 am 
Offline
User avatar

Joined: Sun Jan 25, 2015 6:51 pm
Posts: 77
Location: Tokyo
Thanks for the comments, there won't be any saving or loading, more of a self playing demo disc.

_________________
twitter: http://twitter.com/hawkun
Pirate Pop Plus - gameboy styled game for 3DS, WiiU & Steam


Top
 Profile  
 
PostPosted: Wed Nov 30, 2016 2:12 am 
Offline
User avatar

Joined: Sun Jan 25, 2015 6:51 pm
Posts: 77
Location: Tokyo
Gilbert wrote:
A few years back, I'd tried converting my short demo to FDS.
I've just attached the archived source from my HDD. It's been a while so I haven't checked the integrity of the files, but just drop asm6.exe into the same folder as the files and launch the batch file and things should be done.
Instead of using copy/b actually one may also use asm6 itself to combine the files together (by using incbin and db for header stuff and the like).


Thanks for sharing this, will take a look

_________________
twitter: http://twitter.com/hawkun
Pirate Pop Plus - gameboy styled game for 3DS, WiiU & Steam


Top
 Profile  
 
PostPosted: Fri Dec 02, 2016 4:39 am 
Offline

Joined: Tue May 28, 2013 5:49 am
Posts: 928
Location: Sweden
ccovell wrote:
Pokun wrote:
Edit: BTW there is a way to trick the BIOS to skip the Kyodaku screen so you can boot faster, but I haven't tried it and I didn't want to do it in a basic example template.

Once you have a working program and want to try it, make a new [CODE] file on the disk that gets loaded last upon bootup

So a PRG file then, how does the BIOS determine in what order to boot the files? Is it the file number, file ID or the order the files comes on the disk maybe?


Top
 Profile  
 
PostPosted: Fri Dec 02, 2016 7:06 am 
Offline

Joined: Sun Mar 19, 2006 9:44 pm
Posts: 924
Location: Japan
Location $0029 in the disk header is the "Boot ID Limit". The FDS Bios should automatically load all files that have an ID (file header location $02) less (?) than this limit, before handing control over to the booted game.

_________________
http://www.chrismcovell.com


Top
 Profile  
 
PostPosted: Fri Dec 02, 2016 7:20 am 
Offline

Joined: Tue May 28, 2013 5:49 am
Posts: 928
Location: Sweden
Yes but you said the kyodaku-skipping file must be loaded last. So that means it should have a higher ID than all other files that loads at boot (but still lower than the value in Boot ID Limit)?


Top
 Profile  
 
PostPosted: Fri Dec 02, 2016 9:49 am 
Offline

Joined: Sun Sep 19, 2004 11:12 pm
Posts: 19343
Location: NE Indiana, USA (NTSC)
Yes, as I understand it. Its ID should be one less than the limit.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 14 posts ] 

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 9 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group