4cade/src/constants.a

240 lines
9.1 KiB
Plaintext
Raw Normal View History

2018-08-23 20:02:48 +00:00
;license:MIT
2023-01-06 19:36:12 +00:00
;(c) 2018-2023 by 4am
2018-08-23 20:02:48 +00:00
;
;------------------------------------------------------------------------------
; YE OLDE GRAND UNIFIED MEMORY MAP
;
; LC RAM BANK 1
2021-11-11 15:46:41 +00:00
; D000 - reserved
; D001..D06E - gGlobalPrefsStore
2021-10-27 17:06:04 +00:00
; ...unused...
2021-10-28 00:17:35 +00:00
; E000..E3FF - HGR font data
; ...unused...
2023-01-06 19:36:12 +00:00
; E6C9..FFEB - main program code
2022-05-04 04:07:34 +00:00
; FFEC..FFF9 - API functions and global constants available for main program
2020-03-25 20:56:35 +00:00
; code, prelaunchers, transition effects, &c.
2021-10-18 22:37:40 +00:00
; (LoadFileDirect, Wait/UnwaitForVBL, MockingboardStuff, MachineStatus)
2019-09-09 21:28:13 +00:00
; FFFA..FFFF - NMI, reset, IRQ vectors
;
; LC RAM BANK 2
; D000..D5FF - ProRWTS data
; D600..D8BD - ProRWTS code
; D8BE..DC76 - ProRWTS glue code
; DC77..DC7C - backup of stack (during gameplay and self-running demos)
; DC7D..DC82 - okvs cache (attract state saved across self-running demo)
; ...unused...
; DFB4..DFFF - (de)acceleration function
2021-11-11 15:46:41 +00:00
;
; MAIN MEMORY DURING SEARCH/BROWSE MODE
2024-04-23 04:23:12 +00:00
; 6000..9FFF - search index (489 games = $3AEB/$4000)
2024-04-23 04:23:51 +00:00
; A000..BCFF - search cache (489 games = $1957/$1D00)
2021-11-14 15:43:26 +00:00
; BD00..BEFF - prefs buffer (used to write PREFS.CONF if cheat mode changes)
2021-11-11 15:46:41 +00:00
; BF00..BFFF - ProRWTS glue (supports LoadIndexedFile)
;
; MAIN MEMORY DURING MEGA-ATTRACT MODE
; 0100..0105 - re-entry code for demos (reloaded before demo)
; 0106..01BF - prelaunch code (reloaded before demo)
; 0400..07FF - text screen (cleared before each module)
2021-11-11 15:46:41 +00:00
; 0800..1EFF - slideshow configuration file (persistent during slideshow module)
; 2000..5FFF - hi-res screens (cleared before each module)
; 4000..5FFF - slideshow index file (loaded before slideshow module)
; 6000.. - mega-attract configuration file (reloaded before each module)
; BD00..BEFF - prefs buffer (clobbered if cheat mode changes)
; BF00..BFFF - ProRWTS glue (reset after demo)
;
; MAIN MEMORY DURING MINI-ATTRACT MODE
; 0100..0105 - re-entry code for demos (reloaded before demo)
; 0106..01BF - prelaunch code (reloaded before demo)
; 0400..07FF - text screen (cleared before each module)
2021-11-11 15:46:41 +00:00
; 0800..1FFF - mini-attract index file (loaded once)
; 2000..5FFF - hi-res screens
; 6000.. - mini-attract configuration file (reloaded before each module)
; 6000.. - transition effect code (reloaded before each screenshot module)
2021-11-14 15:43:26 +00:00
; BF00..BFFF - ProRWTS glue (reset after demo)
2021-11-11 15:46:41 +00:00
;
; MAIN MEMORY DURING GAME LAUNCH
; 0100..0105 - re-entry code
; 0106..01BF - prelaunch code
; 0400..7FFF - text screen cleared
2021-11-11 15:46:41 +00:00
; 2000..5FFF - hi-res screens cleared
; A000.. - prelaunch index file
;
; MAIN MEMORY DURING CREDITS (preserves search index and cache)
2021-11-11 15:46:41 +00:00
; 0800.. - credits text
;
; MAIN MEMORY DURING GLOBAL HELP (preserves search index and cache)
2021-11-11 15:46:41 +00:00
; 0800.. - help text
;
; MAIN MEMORY DURING PER-GAME HELP (clobbers search cache)
2021-11-11 15:46:41 +00:00
; 0800.. - help text
2021-11-13 01:46:05 +00:00
; A000.. - game help index file
2021-11-11 15:46:41 +00:00
;
;------------------------------------------------------------------------------
!ifndef _CONSTANTS_ {
2018-08-26 19:33:32 +00:00
; soft switches
2019-06-27 14:55:07 +00:00
KBD = $C000 ; last key pressed (if any)
CLEARKBD = $C010 ; clear last key pressed
STOREOFF = $C000 ; STA then use the following 4 flags:
READMAINMEM = $C002 ; STA to read from main mem
READAUXMEM = $C003 ; STA to read from aux mem
WRITEMAINMEM = $C004 ; STA to write to main mem
WRITEAUXMEM = $C005 ; STA to write to aux mem
CLRC3ROM = $C00A ; STA to use internal Slot 3 ROM (required to use 128K and DHGR)
SETC3ROM = $C00B ; STA to use external Slot 3 ROM (required to detect VidHD in slot 3)
2019-06-27 14:55:07 +00:00
CLR80VID = $C00C ; 40 columns (also used to get out of DHGR mode)
SET80VID = $C00D ; 80 columns (also used to get into DHGR mode)
PRIMARYCHARSET= $C00E ; no mousetext for you
SLOT3STATUS = $C017 ; bit 7 only
MONOCOLOR = $C021 ; IIgs bit 7 switches composite mono/color modes
2021-12-12 21:56:31 +00:00
TBCOLOR = $C022 ; IIgs text foreground and background colors (also VidHD but write-only)
2019-06-28 03:42:01 +00:00
NEWVIDEO = $C029 ; IIgs graphics modes (also VidHD)
2019-06-27 14:55:07 +00:00
SPEAKER = $C030 ; chirp chirp
2021-12-12 21:56:31 +00:00
CLOCKCTL = $C034 ; bits 0-3 are IIgs border color (also VidHD but write-only)
SHADOW = $C035 ; IIgs auxmem-to-bank-E1 shadowing (also VidHD but write-only)
TEXTMODE = $C051
2019-06-27 15:37:23 +00:00
PAGE1 = $C054 ; page 1 (affects text, HGR, DHGR)
PAGE2 = $C055 ; page 2 (affects text, HGR, DHGR)
2019-06-27 14:55:07 +00:00
DHIRESON = $C05E ; double hi-res on switch
DHIRESOFF = $C05F ; double hi-res off switch
2018-08-26 19:33:32 +00:00
2019-06-27 14:55:07 +00:00
; ROM routines and addresses
; (prefixed because so much of the program runs from LC RAM, so don't call
; these without thinking about memory banks first)
ROM_TEXT2COPY =$F962 ; turn on alternate display mode on IIgs
2020-07-29 16:15:22 +00:00
ROM_REBOOT = $FAA6
2019-06-27 14:55:07 +00:00
ROM_TEXT = $FB2F
ROM_MACHINEID =$FBB3
2022-04-29 01:01:37 +00:00
ROM_MACHINE2C =$FBC0
2019-06-27 14:55:07 +00:00
ROM_HOME = $FC58
ROM_WAIT = $FCA8
2023-01-06 19:36:12 +00:00
ROM_CROUT= $FD8E
2020-03-05 17:38:53 +00:00
ROM_COUT = $FDED
2019-06-27 14:55:07 +00:00
ROM_NORMAL = $FE84 ; NORMAL text (instead of INVERSE or FLASH)
ROM_IN0 = $FE89 ; SETKBD
ROM_PR0 = $FE93 ; SETVID
2018-08-26 19:33:32 +00:00
; zero page during init ONLY
zpMachineStatus= $F0 ; bit 7 = 1 if machine has joystick
; bit 6 = 1 if machine has 128K
; bit 5 = 1 if machine has a VidHD card
; bit 4 = 1 if machine is a IIgs
; only used during init, then copied to MachineStatus in LC RAM
2019-10-08 03:24:13 +00:00
zpCharMask = $F1 ; only used during init, then clobbered
2018-08-23 20:02:48 +00:00
; zero page
PARAM = $00 ; word (used by PARAMS_ON_STACK macro, so basically everywhere)
PTR = $02 ; word
SRC = $04 ; word
DEST = $06 ; word
SAVE = $08 ; word
2020-03-24 20:30:14 +00:00
WINDEX = $0A ; word
WCOUNT = $0C ; word
HTAB = $24 ; byte
VTAB = $25 ; byte
2019-06-27 14:55:07 +00:00
RNDSEED = $4E ; word
; textrank
2020-03-24 20:30:14 +00:00
BestMatchIndex = $E5 ; word
tmpx = $E7 ; byte
remainder = $E8 ; word
num1 = $EA ; word
num2 = $EC ; byte
Timeout = $ED ; 3 bytes (used by SearchMode)
zpword = $F0 ; word
zpstring = $F2 ; word
runningscore= $F4 ; word
startat = $F6 ; byte
i = $F7 ; byte
tmp = $F8 ; byte
gamelength= $F9 ; byte
firstletter= $FA ; byte
MatchCount = $FB ; byte
BestMatchScore = $FC ; byte
; main memory
2021-10-27 05:05:15 +00:00
gStackSize = 6 ; seems like only six are needed
2019-10-09 04:25:10 +00:00
gPathname = $BFD0 ; used by SetPath/AddToPath
2021-11-04 20:27:50 +00:00
gKeyLen = $1F00
gKey = $1F01
2019-09-21 16:59:56 +00:00
UILine1 = $1FB0
UILine2 = $1FD8
UI_ToPlay = $1FF7
ProBootEntry = $2025
2019-09-21 16:59:56 +00:00
gValLen = $1F80
gVal = $1F81
2019-01-15 00:06:58 +00:00
gSearchIndex = $6000
gSearchCache = $A000
2021-11-06 23:12:40 +00:00
2021-12-16 02:59:32 +00:00
; LC RAM 1 & 2
2022-09-10 02:47:48 +00:00
iLoadXSingle = $FFE9
2022-05-04 04:07:34 +00:00
iAddToPath = $FFEC
2021-12-16 02:59:32 +00:00
iLoadFileDirect = $FFEF ; note: you really want LC RAM 2 banked in before calling this
2020-03-19 02:53:50 +00:00
WaitForVBL = $FFF2
UnwaitForVBL = $FFF5
2022-04-25 22:09:50 +00:00
MockingboardStuff = $FFF8 ; bit 7 = 1 if SC-01 speech chip present (Speech I)
; bit 6 = 1 if SSI-263 speech chip present (Mockingboard "B"-"D")
; bit 5 = 1 if two AY-3-8910s present (Sound II / Mockingboard "A"-"D")
; bit 5 = 0 if only AY-3-8910 present (Sound I)
; bit 4 unused
2020-02-28 23:33:10 +00:00
; bits 0-3: slot number
MachineStatus = $FFF9
; LC RAM 2
DisableAccelerator = $DFB4
EnableAccelerator = DisableAccelerator+3
2020-03-05 17:38:53 +00:00
; AND masks for MockingboardStuff
MOCKINGBOARD_SLOT = %00001111
2023-01-06 19:36:12 +00:00
HAS_STEREO = %00100000
2022-04-26 01:33:40 +00:00
HAS_SPEECH = %11000000
2020-03-05 17:38:53 +00:00
2021-11-04 20:27:50 +00:00
; AND masks for game info bitfield (after game display name in gSearchStore)
2020-03-13 00:03:37 +00:00
HAS_DHGR_TITLE = %10000000 ; this one is hard-coded via BMI instead of AND/BNE
IS_SINGLE_LOAD = %01000000
2020-03-09 21:24:30 +00:00
CHEAT_CATEGORY = %00001111
; ^^
; ++-- your bits here!
2020-03-09 21:24:30 +00:00
; AND masks for MachineStatus
2020-03-05 17:38:53 +00:00
HAS_JOYSTICK = %10000000
HAS_128K = %01000000
IS_IIGS = %00100000 ; /!\ do not use this to gate SHR, use SUPPORTS_SHR instead
HAS_VIDHD = %00010000
SUPPORTS_SHR = %00110000
CHEATS_ENABLED = %00001000
2020-05-23 22:47:16 +00:00
; AND masks for gMegaAttractModeFilter
ATTRACT_DEMO = %00000001
ATTRACT_HGR_TITLE = %00000010
ATTRACT_HGR_ACTION = %00000100
ATTRACT_DHGR_TITLE = %00001000
ATTRACT_DHGR_ACTION = %00010000
ATTRACT_SHR = %00100000
ATTRACT_GR = %01000000
ATTRACT_DGR = %10000000
2021-10-29 19:59:35 +00:00
PRELAUNCH_STANDARD_SIZE = 61 ; LoadStandardPrelaunch, eventually to be determined at build-time
2020-11-11 19:40:34 +00:00
; shared symbols for prelaunch and effects to call ProRWTS2 functions
iCurBlockLo = $D601 ; constant
iCurBlockHi = $D603 ; constant
launchpatch = $D85C ; glue.launch.a
itraverse = $DB4B ; Roger Rabbit, avoid, use Infiltrator 2 style instead
2021-12-25 01:27:25 +00:00
; also Columns (via file in disk image)
2021-10-20 19:02:42 +00:00
ldrlo = $55 ; constant
2021-10-15 20:00:40 +00:00
ldrhi = $56 ; constant
namlo = $57 ; constant
namhi = $58 ; constant
2021-10-18 22:37:40 +00:00
ldrlo2 = $64 ; constant
ldrhi2 = $65 ; constant
2022-04-29 01:01:37 +00:00
; Columns and Dangerous Dave also call (de)accelerator functions directly
2021-12-25 01:27:25 +00:00
_CONSTANTS_=*
}