-
Notifications
You must be signed in to change notification settings - Fork 1
2.1. Filsystem
På Mega Driven kommer allt alltid finnas i ROM, så där behövs ingen laddning.
På Amiga kommer vi göra ett eget filsystem där all data trackloadas från sektorer på en floppy.
Data kommer incbinnas på både Amiga och Mega Driven. På Amigan kommer det funka eftersom det är vi själva som laddar in både kod och data, så vi har inget OS som kommer försöka ladda in hela exe-filen i RAM. Det kommer se ut någonting liknande detta:
Overworld_TileBank:
macro_align_on_chunk
incbin "../data/overworld_tilebank.bin"
Overworld_TileBank_End:
Overworld_TileBank_StartChunk equ (Overworld_TileBank / DATA_CHUNK_SIZE)
Overworld_TileBank_NumChunks equ (((Overworld_TileBank_End-Overworld_TileBank)+(DATA_CHUNK_SIZE-1)) / DATA_CHUNK_SIZE))
Vi kommer referera till filer genom ID'n. Så någonstans kommer det finnas en massa defines som ser ut typ så här:
FILEID_OVERWORLD_TILEBANK equ 0
FILEID_OVERWORLD_PALETTE equ 1
FILEID_ROOM001 equ 2
FILEID_ROOM002 equ 3
FILEID_ROOM003 equ 4
Ett ID kommer på Mega Driven mappas till ett område i ROM'en och på Amigan mappas till sektorer på floppyn.
Så spellogiken som vill ladda data kommer se ut typ så här:
move.l #FILEID_OVERWORLD_TILEBANK,d0
jsr tilebankLoad
Sen har vi det viktigaste, mappningen från ett fil ID till en label. Den skulle kunna se ut så här:
FileIDMap:
dc.w Overworld_TileBank_StartChunk, Overworld_TileBank_NumChunks
dc.w Overworld_Palette_StartChunk, Overworld_Palette_NumChunks
dc.w Room_001_StartChunk, Room_001_NumChunks
dc.w Room_002_StartChunk, Room_002_NumChunks
dc.w Room_003_StartChunk, Room_003_NumChunks
All den här datan kommer exporteras av ett datatool vi skriver i Unity, så vi kommer inte skriva något av det här för hand.
Labels kommer baseras på filnamn på källfilen. Så heter BMP-filen Overworld och den exporteras till de tre filerna
Overworld_TileBank
Overworld_TileMap
Overworld_Palette
Då får vi tre labels med motsvarande namn, samt tre fil ID'n som heter typ
FILEID_OVERWORLD_TILEBANK
FILEID_OVERWORLD_TILEMAP
FILEID_OVERWORLD_PALETTE