68k ASM defines

From NeoGeo Development Wiki
Revision as of 02:39, 27 June 2011 by Furrtek (talk | contribs) (Added (incomplete) infos from official doc)
Jump to navigation Jump to search

Here are preliminary ASM defines for memory locations and constants. For detailed descriptions, see Memory mapped registers.

This can be made into a file and included in your ASM source code to use register names instead of their (meaningless) addresses in RAM.

SCB1            equ $0000   ;VRAM, Sprite tilemaps
FIXMAP          equ $7000   ;VRAM, Fix map
SCB2            equ $8000   ;VRAM, Sprite shrink ratios
SCB3            equ $8200   ;VRAM, Sprite Y positions and sizes
SCB4            equ $8400   ;VRAM, Sprite X positions

BLACK           equ $8000
MIDBLUE         equ $1007
BLUE            equ $100F
MIDGREEN        equ $2070
GREEN           equ $20F0
MIDCYAN         equ $3077
CYAN            equ $30FF
MIDRED          equ $4700
RED             equ $4F00
MIDMAGENTA      equ $5707
MAGENTA         equ $5F0F
ORANGE          equ $6F70
MIDYELLOW       equ $6770
YELLOW          equ $6FF0
MIDGREY         equ $7777
WHITE           equ $7FFF

RAMSTART        equ $100000 ;User RAM start
PALETTES        equ $400000 ;Palette RAM start
BACKDROPCOLOR   equ PALETTES+(16*2*256)-2

REG_P1CNT       equ $300000 ;Joystick port 1
REG_DIPSW       equ $300001 ;Dipswitches/Watchdog
REG_SOUND       equ $320000 ;In/Out Z80
REG_STATUS_A    equ $320001
REG_P2CNT       equ $340000 ;Joystick port 2
REG_STATUS_B    equ $380000
REG_POUTPUT     equ $380001 ;Joypad port outputs 	 
REG_SLOT        equ $380021 ;Slot selection

REG_DISPENABL   equ $3A0001 ;Video output ON
REG_DISPDSABL   equ $3A0011 ;Video output OFF
REG_SWPROM      equ $3A0013 ;Use ROM vector table
REG_CRDUNLOCK1  equ $3A0005 ;Allow /WE to pass through to memory card when low
REG_CRDLOCK1    equ $3A0015 ;Don't allow /WE to pass through to memory card
REG_CRDLOCK2    equ $3A0007 ;Don't allow /WE to pass through to memory card
REG_CRDUNLOCK2  equ $3A0017 ;Allow /WE to pass through to memory card when high
REG_BRDFIX      equ $3A000B ;Use board fix tileset
REG_CRTFIX      equ $3A001B ;Use ROM fix tileset
REG_SRAMLOCK    equ $3A000D ;Write-protect SRAM
REG_SRAMUNLOCK  equ $3A001D ;Write-unprotect SRAM
REG_PALBANK1    equ $3A000F ;Use palette bank 1
REG_PALBANK0    equ $3A001F ;Use palette bank 0 (default)

VRAM_ADDR       equ $3C0000
VRAM_RW         equ $3C0002
VRAM_MOD        equ $3C0004
REG_HBLANKCNT   equ $3C0006
REG_HBLANKPOS   equ $3C0008
REG_IRQACK      equ $3C000C

; BIOS calls
BIOSF_SYSTEM_INT1   equ $C00438
BIOSF_SYSTEM_RETURN equ $C00444
BIOSF_SYSTEM_IO     equ $C0044A ;Sets RAM values from I/O ports
BIOSF_CREDIT_CHECK  equ $C00450
BIOSF_CREDIT_DOWN   equ $C00456
BIOSF_READ_CALENDAR equ $C0045C ;Set calendar addresses (10FDD2+), MVS only
BIOSF_CARD          equ $C00468 ;Perform memory card operations
BIOSF_CARD_ERROR    equ $C0046E ;In case a memory card error occurred, prompt user for action
BIOSF_VIDEOEN       equ $C00470 ;Enable/disable video layers, CD only
BIOSF_HOWTOPLAY     equ $C00474 ;Show how-to-play presentation, MVS only
BIOSF_FIX_CLEAR     equ $C004C2 ;Clear fix layer
BIOSF_LSP_1ST       equ $C004C8 ;Clear sprites
BIOSF_MESS_OUT      equ $C004CE
BIOSF_UPLOAD        equ $C00546 ;Upload data to DRAM, CD only 
BIOSF_CDDACMD       equ $C0056A ;Issue CDDA command, CD only

;DMA related:
REG_DMACPYSRC   equ $FF0064 ;longword: Copy source address ?
REG_DMAFILDEST  equ $FF0064 ;longword: Fill destination address ?
REG_DMACPYDEST  equ $FF0068 ;longword: Copy destination address ?
REG_DMAFILVAL   equ $FF006C ;word: Fill value (word) ?
REG_DMASIZE     equ $FF0070 ;longword?: Size (in 16 bit words)
REG_DMASTART    equ $FF0060 ;byte: Start transfer ($40 ?)

REG_DISBLSPR    equ $FF0111 ;byte: 0/1 disable sprites
REG_DISBLFIX    equ $FF0115 ;byte: 0/1 disable fix layer
REG_ENVIDEO     equ $FF0119 ;byte: 0/1 enable video output
REG_CDCONFIG    equ $FF011C ;word: jumper and lid switch input

REG_UPMAPSPR    equ $FF0121 ;bytes (0 or 1)
REG_UPMAPPCM    equ $FF0123
REG_UPMAPZ80    equ $FF0127
REG_UPMAPFIX    equ $FF0129
REG_UPUNMAPSPR  equ $FF0141
REG_UPUNMAPPCM  equ $FF0143
REG_UPUNMAPZ80  equ $FF0147
REG_UPUNMAPFIX  equ $FF0149
REG_DISBLIRQ    equ $FF016F
REG_ENZ80       equ $FF0183

REG_CDDALEFTL   equ $FF0188 ;CD audio levels
REG_CDDARIGHTL  equ $FF018A

BIOS_SYSTEM_MODE  equ $10FD80 ;Game/system mode (bit 7)
BIOS_MVS_FLAG     equ $10FD82
BIOS_COUNTRY_CODE equ $10FD83
BIOS_GAME_DIP     equ $10FD84 ;start of soft DIPs settings (up to $10FD93)

; Set by BIOSF_VBL
BIOS_P1STATUS   equ $10FD94
BIOS_P1CURRENT  equ $10FD95 ;joystick 1 state
BIOS_P1PREVIOUS equ $10FD96 ;previous joystick 1 state
BIOS_P1CHANGE   equ $10FD97 ;joystick 1 state change
BIOS_P1REPEAT   equ $10FD98 ;joystick 1 repeat
BIOS_P1TIMER    equ $10FD99

BIOS_P2STATUS   equ $10FD9A
BIOS_P2CURRENT  equ $10FD9B ;joystick 2 state
BIOS_P2PREVIOUS equ $10FD9C ;previous joystick 2 state
BIOS_P2CHANGE   equ $10FD9D ;joystick 2 state change
BIOS_P2REPEAT   equ $10FD9E ;joystick 2 repeat
BIOS_P2TIMER    equ $10FD99

;button definitions
CNT_UP	        equ 0
CNT_DN	        equ 1
CNT_LE	        equ 2
CNT_RI	        equ 3
CNT_A	        equ 4
CNT_B	        equ 5
CNT_C	        equ 6
CNT_D	        equ 7

BIOS_STATCURNT  equ $10FDAC ;joystick 1/2 start/select
BIOS_STATCHANGE equ $10FDAD ;previous joystick 1/2 start/select

BIOS_USER_REQUEST equ $10FDAE
BIOS_USER_MODE    equ $10FDAF

BIOS_START_FLAG   equ $10FDB4

BIOS_MESS_BUSY    equ $10FDC2

; Memory card related:
BIOS_CRDF       equ $10FDC4 ;byte: function to perform when calling BIOSF_CRDACCESS, see below table
BIOS_CRDRESULT  equ $10FDC6 ;byte: 00 on success, else 80+ and encodes the error, see below table
BIOS_CRDPTR     equ $10FDC8 ;longword: pointer to read from/write to
BIOS_CRDSIZE    equ $10FDCC ;word: how much data to read/write from/to card
BIOS_CRDNGH     equ $10FDCE ;word: usually game NGH. Unique identifier for the game that 'owns' the save file
BIOS_CRDFILE    equ $10FDD0 ;word: each NGH has up to 16 save 'files' associated with

; Calendar, only set by MVS (all data stored in BCD)
BIOS_YEAR       equ $10FDD2 ;last 2 digits of year
BIOS_MONTH      equ $10FDD3
BIOS_DAY        equ $10FDD4
BIOS_WEEKDAY    equ $10FDD5 ;Sunday = 00, Monday = 01 ... Saturday = 06
BIOS_HOUR       equ $10FDD6 ;24 hour time
BIOS_MINUTE     equ $10FDD7
BIOS_SECOND     equ $10FDD8

BIOS_DEVMODE    equ $10FE80 ;Byte: non-zero for developer mode

; Upload to DRAM
BIOS_UPDEST     equ $10FEF4 ;longword: destination address (!)
BIOS_UPSRC      equ $10FEF8 ;longword: source address
BIOS_UPSIZE     equ $10FEFC ;longword: size
BIOS_UPZONE     equ $10FEDA ;byte: zone (0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)
BIOS_UPBANK     equ $10FEDB ;byte: bank

SOUND_STOP      equ $D00046 ;byte