BIOSF UPLOAD

From NeoGeo Development Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

The BIOSF_UPLOAD ($C00546) call copies data to the NeoGeo CD DRAM.

The parameters are:

BIOS_UPSRC ($10FEF8 ) (longword): Data source address

BIOS_UPDEST ($10FEF4 ) (longword): Data destination address

BIOS_UPSIZE ($10FEFC ) (longword): Data size

BIOS_UPZONE ($10FEDA ) (byte): Zone/method, see below

BIOS_UPBANK ($10FEDB ) (byte): DRAM bank

When the call returns, BIOS_UPDEST points to the end of the copied data, allowing multiple consecutive uploads without setting the destination address again.

Banks

Some DRAM zones have banks: SPR has 4 banks (each 1MiB), PCM has 4 banks (each 512KiB).

Zones/methods

$00: Copy PRG words (DMA)

Loads word copy DMA microcode.

$01: Copy Fix graphics bytes (DMA)

Loads byte copy DMA microcode. Dest = Dest + Size * 2.

$02: Copy Sprite graphics words (DMA)

Loads word copy DMA microcode. Copies over 1MiB are possible, the bank is incremented automatically.

$03: Copy Z80 program bytes (DMA)

Loads byte copy DMA microcode.

The destination address must be multiplied by 2 (8bit bus) ? Size doesn't have to be multiplied, but has to be an even number ?

$04: Copy PCM bytes (CPU)

Loads byte copy DMA microcode.

The destination address must be multiplied by 2 (8bit bus). Size doesn't have to be multiplied, but has to be an even number. Copies over 1MiB are possible, the bank is incremented automatically.

$05: Install PAT file

Notes:

  • 10F736.l=((Bank*$10000)+Dest)/256
  • 10F736+Address/2

$06: Copy palette words (DMA)

Loads word copy DMA microcode.

$07: Copy compressed sprite graphics (CPU)

The first longword's value indicates the size of the compressed data, BIOS_UPSIZE isn't used. When a longword zero is copied, the following longword indicates how many zero longwords to insert.

This method allows compression of large transparent zones. Is it ever used by games ?

$08: Copy PRG words (DMA)

Same as method $00.

$10: Copy PRG longwords (CPU)

Size must be a multiple of 4.

$11: Copy Fix graphics words (CPU)

The destination address must be multiplied by 2 (8bit bus). Size doesn't have to be multiplied, but has to be an even number.

$12: Copy Sprite graphics longwords (CPU)

Size must be a multiple of 4.

$13: Copy Z80 program bytes (CPU)

The destination address must be multiplied by 2 (8bit bus). Size doesn't have to be multiplied, but has to be an even number.

$14: Copy PCM bytes (CPU)

The destination address must be multiplied by 2 (8bit bus). Size doesn't have to be multiplied, but has to be an even number. Copies over 1MiB are possible, the bank is incremented automatically.

Difference with $04 ?

$15: Install PAT file

Same as method $05.

$16: Copy palette longwords (CPU)

Size must be a multiple of 4.

$17: Copy compressed sprite graphics (CPU)

Same as method $07.

$18: Copy PRG longwords (CPU)

Same as method $10.