Skip to content

2.1. Filsystem

MagnusRunesson edited this page Jan 8, 2015 · 1 revision

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

Clone this wiki locally