CARD: Difference between revisions

From NeoGeo Development Wiki
Jump to navigation Jump to search
m (Formatting, wording)
No edit summary
Line 1: Line 1:
=CARD ($C00468)=
=CARD ($C00468)=


The CARD [[system ROM]] call is used to perform opeartions on the [[memory card]].
The CARD [[system ROM]] call is used to perform operation on the [[memory card]].


'''Warning:''' register contents aren't preserved !
'''Warning:''' register contents aren't preserved !

Revision as of 15:41, 21 August 2024

CARD ($C00468)

The CARD system ROM call is used to perform operation on the memory card.

Warning: register contents aren't preserved !

Variables

The following variables are used when calling CARD:

Address DEF name Size Set by Description
$10FDC4 BIOS_CARD_COMMAND byte System ROM or game Command code to execute
$10FDC6 BIOS_CARD_ANSWER byte System ROM Answer code (see below)
$10FDC8 BIOS_CARD_START longword System ROM or game Pointer to data
$10FDCC BIOS_CARD_SIZE word System ROM or game Size of data
$10FDCE BIOS_CARD_FCB word System ROM or game Game NGH number
$10FDD0 BIOS_CARD_SUB byte or word System ROM or game Game save sub-number

The following temporary variables are used when calling CARD :

Address DEF name Size Description
$10FD04 BIOS_CARD_DIRECTORY_START long word Start of directory
$10FD08 BIOS_CARD_BLOCK_NUMBER word Number of blocks
$10FD0A BIOS_CARD_FAT_START long word Start of FAT
$10FD0E BIOS_CARD_FAT_SIZE word Size of FAT
$10FD10 BIOS_CARD_DATA_START long word Start of data
$10FD14 BIOS_CARD_TYPE word
  • $0 : 8 bits card
  • $01 : 16 bits card
  • $80 : 16 bits wide weird card (todo)
$10FD16 BIOS_CARD_SIZE word Size of the card

BIOS_CARD_ANSWER

This variable contains the result of the operation. Bit 7 indicates an error.

  • $00: Normal completion
  • $80: No card inserted
  • $81: Card isn't formatted
  • $82: Requested data doesn't exist
  • $83: FAT error
  • $84: Card is full
  • $85: Write disabled or ROM card

Commands

$0: Format memory card

Formats the memory card.

$1: Data search

Return the number of save files for the specified game.

Inputs:

BIOS_CARD_FCB must contain the NGH number of the desired game.

Outputs:

BIOS_CARD_SUB contains a 16 bit mask for all 16 available blocks for the game. If a bit is set, then the corresponding save block exists.

$2: Load data

Loads the specified save file in RAM.

Inputs:

  • BIOS_CARD_FCB must contain the NGH number of the desired game.
  • BIOS_CARD_SUB must contain the game save number (16 max. per game).
  • BIOS_CARD_START must be a pointer to which the save data will be loaded.
  • BIOS_CARD_SIZE must contain the size of the save (usually 64 bytes).

$3: Save data

Save from RAM to the specified save file.

Inputs:

  • BIOS_CARD_FCB must contain the NGH number of the desired game.
  • BIOS_CARD_SUB must contain the game save number (16 max. per game).
  • BIOS_CARD_START must be a pointer from which the save data will be copied.
  • BIOS_CARD_SIZE must contain the size of the save (usually 64 bytes).

$4: Delete data

Delete the specified file.

Inputs:

  • BIOS_CARD_FCB must contain the NGH number of the desired game.
  • BIOS_CARD_SUB must contain the game save number (16 max. per game).

$5: Read data title

Read the data title of a save file.

Inputs:

  • BIOS_CARD_START must be a pointer to which the title string will be copied.
  • BIOS_CARD_SIZE must contain the game save number ?

$6: Save user name

Set the user name of the memory card.

Inputs:

BIOS_CARD_START must be a pointer to the user name's string (max. 16 bytes).

$7: Load user name

Loads the user name of the memory card.

Inputs:

BIOS_CARD_START must be a pointer to which the user name's string will be copied.