2018-08-23 16:02:48 -04:00
|
|
|
;license:MIT
|
2023-01-06 11:36:12 -08:00
|
|
|
;(c) 2018-2023 by 4am
|
2018-08-23 16:02:48 -04:00
|
|
|
;
|
|
|
|
|
2019-06-19 21:50:48 -04:00
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
; YE OLDE GRAND UNIFIED MEMORY MAP
|
|
|
|
;
|
|
|
|
; LC RAM BANK 1
|
2021-11-11 10:46:41 -05:00
|
|
|
; D000 - reserved
|
|
|
|
; D001..D06E - gGlobalPrefsStore
|
2021-10-27 13:06:04 -04:00
|
|
|
; ...unused...
|
2024-05-26 13:41:21 -04:00
|
|
|
; D100..D4FF - HGR font data
|
2021-10-27 20:17:35 -04:00
|
|
|
; ...unused...
|
2023-01-06 11:36:12 -08:00
|
|
|
; E6C9..FFEB - main program code
|
2022-05-03 21:07:34 -07:00
|
|
|
; FFEC..FFF9 - API functions and global constants available for main program
|
2020-03-25 16:56:35 -04:00
|
|
|
; code, prelaunchers, transition effects, &c.
|
2021-10-18 15:37:40 -07:00
|
|
|
; (LoadFileDirect, Wait/UnwaitForVBL, MockingboardStuff, MachineStatus)
|
2019-09-09 14:28:13 -07:00
|
|
|
; FFFA..FFFF - NMI, reset, IRQ vectors
|
2019-06-19 21:50:48 -04:00
|
|
|
;
|
|
|
|
; LC RAM BANK 2
|
2021-11-14 07:31:56 -08:00
|
|
|
; D000..D5FF - ProRWTS data
|
2022-06-16 22:07:06 -07:00
|
|
|
; D600..D8BD - ProRWTS code
|
2024-05-25 20:51:48 -04:00
|
|
|
; D8BE..DCB7 - ProRWTS glue code
|
|
|
|
; DCB8..DCBD - backup of stack (during gameplay and self-running demos)
|
|
|
|
; DCBE..DCC2 - okvs cache (attract state saved across self-running demo)
|
2020-11-09 10:45:03 -08:00
|
|
|
; ...unused...
|
2021-11-14 07:31:56 -08:00
|
|
|
; DFB4..DFFF - (de)acceleration function
|
2021-11-11 10:46:41 -05:00
|
|
|
;
|
|
|
|
; MAIN MEMORY DURING SEARCH/BROWSE MODE
|
2024-05-25 20:51:48 -04:00
|
|
|
; 6000..9FFF - search index (499 games = $3C3C/$4000)
|
|
|
|
; A000..BCFF - search cache (499 games = $1837/$1D00)
|
2021-11-14 10:43:26 -05:00
|
|
|
; BD00..BEFF - prefs buffer (used to write PREFS.CONF if cheat mode changes)
|
2021-11-11 10:46:41 -05: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)
|
2021-12-13 15:29:14 -05:00
|
|
|
; 0400..07FF - text screen (cleared before each module)
|
2021-11-11 10:46:41 -05: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)
|
2021-12-13 15:29:14 -05:00
|
|
|
; 0400..07FF - text screen (cleared before each module)
|
2021-11-11 10:46:41 -05: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 10:43:26 -05:00
|
|
|
; BF00..BFFF - ProRWTS glue (reset after demo)
|
2021-11-11 10:46:41 -05:00
|
|
|
;
|
|
|
|
; MAIN MEMORY DURING GAME LAUNCH
|
|
|
|
; 0100..0105 - re-entry code
|
|
|
|
; 0106..01BF - prelaunch code
|
2024-05-27 13:32:07 -04:00
|
|
|
; 0400..07FF - text screen cleared
|
2021-11-11 10:46:41 -05:00
|
|
|
; 2000..5FFF - hi-res screens cleared
|
|
|
|
; A000.. - prelaunch index file
|
|
|
|
;
|
2021-11-13 16:18:58 -05:00
|
|
|
; MAIN MEMORY DURING CREDITS (preserves search index and cache)
|
2021-11-11 10:46:41 -05:00
|
|
|
; 0800.. - credits text
|
|
|
|
;
|
2021-11-13 16:18:58 -05:00
|
|
|
; MAIN MEMORY DURING GLOBAL HELP (preserves search index and cache)
|
2021-11-11 10:46:41 -05:00
|
|
|
; 0800.. - help text
|
|
|
|
;
|
2021-11-13 16:18:58 -05:00
|
|
|
; MAIN MEMORY DURING PER-GAME HELP (clobbers search cache)
|
2021-11-11 10:46:41 -05:00
|
|
|
; 0800.. - help text
|
2021-11-12 20:46:05 -05:00
|
|
|
; A000.. - game help index file
|
2021-11-11 10:46:41 -05:00
|
|
|
;
|
2019-06-19 21:50:48 -04:00
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
|
2020-11-12 17:07:04 -05:00
|
|
|
!ifndef _CONSTANTS_ {
|
|
|
|
|
2018-08-26 15:33:32 -04:00
|
|
|
; soft switches
|
2019-06-27 10:55:07 -04: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
|
2019-07-20 21:51:55 -05:00
|
|
|
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 10:55:07 -04: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
|
2022-12-11 08:53:04 -08:00
|
|
|
MONOCOLOR = $C021 ; IIgs bit 7 switches composite mono/color modes
|
2021-12-12 16:56:31 -05:00
|
|
|
TBCOLOR = $C022 ; IIgs text foreground and background colors (also VidHD but write-only)
|
2019-06-27 23:42:01 -04:00
|
|
|
NEWVIDEO = $C029 ; IIgs graphics modes (also VidHD)
|
2019-06-27 10:55:07 -04:00
|
|
|
SPEAKER = $C030 ; chirp chirp
|
2021-12-12 16:56:31 -05: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)
|
2020-03-13 10:34:56 -04:00
|
|
|
TEXTMODE = $C051
|
2019-06-27 11:37:23 -04:00
|
|
|
PAGE1 = $C054 ; page 1 (affects text, HGR, DHGR)
|
|
|
|
PAGE2 = $C055 ; page 2 (affects text, HGR, DHGR)
|
2019-06-27 10:55:07 -04:00
|
|
|
DHIRESON = $C05E ; double hi-res on switch
|
|
|
|
DHIRESOFF = $C05F ; double hi-res off switch
|
2018-08-26 15:33:32 -04:00
|
|
|
|
2019-06-27 10:55:07 -04: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)
|
2019-07-29 12:00:59 -04:00
|
|
|
ROM_TEXT2COPY =$F962 ; turn on alternate display mode on IIgs
|
2020-07-29 12:15:22 -04:00
|
|
|
ROM_REBOOT = $FAA6
|
2019-06-27 10:55:07 -04:00
|
|
|
ROM_TEXT = $FB2F
|
|
|
|
ROM_MACHINEID =$FBB3
|
2022-04-28 18:01:37 -07:00
|
|
|
ROM_MACHINE2C =$FBC0
|
2019-06-27 10:55:07 -04:00
|
|
|
ROM_HOME = $FC58
|
2022-11-27 08:08:48 -08:00
|
|
|
ROM_WAIT = $FCA8
|
2023-01-06 11:36:12 -08:00
|
|
|
ROM_CROUT= $FD8E
|
2020-03-05 12:38:53 -05:00
|
|
|
ROM_COUT = $FDED
|
2019-06-27 10:55:07 -04:00
|
|
|
ROM_NORMAL = $FE84 ; NORMAL text (instead of INVERSE or FLASH)
|
|
|
|
ROM_IN0 = $FE89 ; SETKBD
|
|
|
|
ROM_PR0 = $FE93 ; SETVID
|
2018-08-26 15:33:32 -04:00
|
|
|
|
2019-09-21 22:46:08 -04: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-07 23:24:13 -04:00
|
|
|
zpCharMask = $F1 ; only used during init, then clobbered
|
2019-09-21 22:46:08 -04:00
|
|
|
|
2018-08-23 16:02:48 -04:00
|
|
|
; zero page
|
2019-09-21 22:18:33 -04:00
|
|
|
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 16:30:14 -04:00
|
|
|
WINDEX = $0A ; word
|
|
|
|
WCOUNT = $0C ; word
|
2019-09-21 22:46:08 -04:00
|
|
|
HTAB = $24 ; byte
|
|
|
|
VTAB = $25 ; byte
|
2019-06-27 10:55:07 -04:00
|
|
|
RNDSEED = $4E ; word
|
2019-09-21 22:46:08 -04:00
|
|
|
; textrank
|
2020-03-24 16:30:14 -04:00
|
|
|
BestMatchIndex = $E5 ; word
|
2019-09-21 22:46:08 -04:00
|
|
|
tmpx = $E7 ; byte
|
|
|
|
remainder = $E8 ; word
|
|
|
|
num1 = $EA ; word
|
|
|
|
num2 = $EC ; byte
|
2019-06-23 14:40:07 -04:00
|
|
|
Timeout = $ED ; 3 bytes (used by SearchMode)
|
2019-09-21 22:46:08 -04:00
|
|
|
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
|
|
|
|
|
2018-08-30 21:31:54 -07:00
|
|
|
; main memory
|
2021-10-26 22:05:15 -07:00
|
|
|
gStackSize = 6 ; seems like only six are needed
|
2019-10-08 21:25:10 -07:00
|
|
|
gPathname = $BFD0 ; used by SetPath/AddToPath
|
2024-05-26 13:41:21 -04:00
|
|
|
gKeyLen = $1F00 ; used by ParseKeyValueList
|
|
|
|
gKey = $1F01 ; ""
|
|
|
|
gValLen = $1F80 ; ""
|
|
|
|
gVal = $1F81 ; ""
|
|
|
|
UILine1 = $1FB0 ; used by DrawUI
|
|
|
|
UILine2 = $1FD8 ; ""
|
|
|
|
UI_ToPlay = $1FF7 ; ""
|
|
|
|
ProBootEntry = $2025 ; used by ProBoot
|
2019-09-21 12:59:56 -04:00
|
|
|
|
2019-01-14 19:06:58 -05:00
|
|
|
|
2021-11-09 17:19:25 -05:00
|
|
|
gSearchIndex = $6000
|
|
|
|
gSearchCache = $A000
|
2021-11-06 19:12:40 -04:00
|
|
|
|
2021-12-15 21:59:32 -05:00
|
|
|
; LC RAM 1 & 2
|
2024-05-26 13:41:21 -04:00
|
|
|
; these are defined here because they are also called by other targets
|
|
|
|
; that are assembled separately, e.g. prelaunchers, demo launchers, and graphic effects
|
2024-05-27 13:32:07 -04:00
|
|
|
UnwaitForVBL = $FFEE
|
|
|
|
WaitForVBL = UnwaitForVBL-3
|
|
|
|
iLoadFileDirect = WaitForVBL-3 ; note: you really want LC RAM 2 banked in before calling this
|
|
|
|
iAddToPath = iLoadFileDirect-3
|
|
|
|
iLoadXSingle = iAddToPath-3
|
|
|
|
iLoadFXDATA = iLoadXSingle-3
|
|
|
|
iBuildHGRTables = iLoadFXDATA-3
|
|
|
|
iBuildHGRMirrorTables = iBuildHGRTables-3
|
|
|
|
iBuildHGRMirrorCols = iBuildHGRMirrorTables-3
|
2024-05-27 21:39:51 -04:00
|
|
|
iBuildDHGRMirrorCols = iBuildHGRMirrorCols-3
|
|
|
|
iBuildHGRDitherMasks = iBuildDHGRMirrorCols-3
|
|
|
|
iBuildDHGRDitherMasks = iBuildHGRDitherMasks-3
|
|
|
|
iWaitForKeyWithTimeout = iBuildDHGRDitherMasks-3
|
2024-05-27 13:32:07 -04:00
|
|
|
iReverseCoordinates1Bit = iWaitForKeyWithTimeout-3
|
|
|
|
iRippleCoordinates1Bit = iReverseCoordinates1Bit-3
|
|
|
|
iRippleCoordinates1Bit2 = iRippleCoordinates1Bit-3
|
|
|
|
iRippleCoordinates1Bit3 = iRippleCoordinates1Bit2-3
|
|
|
|
iRippleCoordinates1Bit4 = iRippleCoordinates1Bit3-3
|
|
|
|
iBuildHGRSparseBitmasks1Bit = iRippleCoordinates1Bit4-3
|
|
|
|
iBuildDHGRSparseBitmasks1Bit = iBuildHGRSparseBitmasks1Bit-3
|
2024-05-28 09:42:19 -04:00
|
|
|
iHGRPrecomputed1Bit = iBuildDHGRSparseBitmasks1Bit-3
|
2024-05-28 22:00:35 -04:00
|
|
|
iHGRDitherPrecomputed1Bit = iHGRPrecomputed1Bit-3
|
|
|
|
iDHGRPrecomputed1Bit = iHGRDitherPrecomputed1Bit-3
|
|
|
|
iDHGRDitherPrecomputed1Bit = iDHGRPrecomputed1Bit-3
|
|
|
|
iBuildHGRSparseBitmasks2Bit = iDHGRDitherPrecomputed1Bit-3
|
2024-05-27 21:39:51 -04:00
|
|
|
iBuildDHGRSparseBitmasks2Bit = iBuildHGRSparseBitmasks2Bit-3
|
|
|
|
iReverseCoordinates2Bit = iBuildDHGRSparseBitmasks2Bit-3
|
2024-05-27 13:32:07 -04:00
|
|
|
iRippleCoordinates2Bit = iReverseCoordinates2Bit-3
|
2024-05-28 18:57:51 -04:00
|
|
|
iHGRPrecomputed2Bit = iRippleCoordinates2Bit-3
|
2024-05-29 12:24:29 -04:00
|
|
|
iHGRDitherPrecomputed2Bit = iHGRPrecomputed2Bit-3
|
|
|
|
iDHGRPrecomputed2Bit = iHGRDitherPrecomputed2Bit-3
|
|
|
|
iDHGRDitherPrecomputed2Bit = iDHGRPrecomputed2Bit-3
|
|
|
|
iSetupPrecomputed3Bit = iDHGRDitherPrecomputed2Bit-3
|
2024-05-27 13:32:07 -04:00
|
|
|
iReverseCoordinates3Bit = iSetupPrecomputed3Bit-3
|
|
|
|
iRippleCoordinates3Bit = iReverseCoordinates3Bit-3
|
2024-05-28 20:59:33 -04:00
|
|
|
iHGRPrecomputed3Bit = iRippleCoordinates3Bit-3
|
2020-03-18 19:53:50 -07:00
|
|
|
|
2022-04-25 15:09:50 -07: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 15:33:10 -08:00
|
|
|
; bits 0-3: slot number
|
2019-10-04 21:34:49 -04:00
|
|
|
MachineStatus = $FFF9
|
2019-09-15 17:55:16 -04:00
|
|
|
|
2019-10-04 21:34:49 -04:00
|
|
|
; LC RAM 2
|
2021-11-14 07:31:56 -08:00
|
|
|
DisableAccelerator = $DFB4
|
2019-10-04 21:34:49 -04:00
|
|
|
EnableAccelerator = DisableAccelerator+3
|
|
|
|
|
2020-03-05 12:38:53 -05:00
|
|
|
; AND masks for MockingboardStuff
|
|
|
|
MOCKINGBOARD_SLOT = %00001111
|
2023-01-06 11:36:12 -08:00
|
|
|
HAS_STEREO = %00100000
|
2022-04-25 18:33:40 -07:00
|
|
|
HAS_SPEECH = %11000000
|
2020-03-05 12:38:53 -05:00
|
|
|
|
2021-11-04 16:27:50 -04:00
|
|
|
; AND masks for game info bitfield (after game display name in gSearchStore)
|
2020-03-12 17:03:37 -07:00
|
|
|
HAS_DHGR_TITLE = %10000000 ; this one is hard-coded via BMI instead of AND/BNE
|
2022-09-05 20:38:43 -04:00
|
|
|
IS_SINGLE_LOAD = %01000000
|
2020-03-09 17:24:30 -04:00
|
|
|
CHEAT_CATEGORY = %00001111
|
2022-09-05 20:38:43 -04:00
|
|
|
; ^^
|
|
|
|
; ++-- your bits here!
|
2020-03-09 17:24:30 -04:00
|
|
|
|
2019-10-04 21:34:49 -04:00
|
|
|
; AND masks for MachineStatus
|
2020-03-05 12:38:53 -05: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 15:47:16 -07:00
|
|
|
|
2022-06-05 21:53:41 -04: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 12:59:35 -07:00
|
|
|
PRELAUNCH_STANDARD_SIZE = 61 ; LoadStandardPrelaunch, eventually to be determined at build-time
|
|
|
|
|
2020-11-11 14:40:34 -05:00
|
|
|
; shared symbols for prelaunch and effects to call ProRWTS2 functions
|
2021-11-14 07:31:56 -08:00
|
|
|
iCurBlockLo = $D601 ; constant
|
|
|
|
iCurBlockHi = $D603 ; constant
|
2022-06-16 22:07:06 -07:00
|
|
|
launchpatch = $D85C ; glue.launch.a
|
|
|
|
itraverse = $DB4B ; Roger Rabbit, avoid, use Infiltrator 2 style instead
|
2021-12-24 17:27:25 -08:00
|
|
|
; also Columns (via file in disk image)
|
2021-10-20 12:02:42 -07:00
|
|
|
ldrlo = $55 ; constant
|
2021-10-15 13:00:40 -07:00
|
|
|
ldrhi = $56 ; constant
|
|
|
|
namlo = $57 ; constant
|
|
|
|
namhi = $58 ; constant
|
2021-10-18 15:37:40 -07:00
|
|
|
ldrlo2 = $64 ; constant
|
|
|
|
ldrhi2 = $65 ; constant
|
2020-11-12 17:07:04 -05:00
|
|
|
|
2022-04-28 18:01:37 -07:00
|
|
|
; Columns and Dangerous Dave also call (de)accelerator functions directly
|
2021-12-24 17:27:25 -08:00
|
|
|
|
2024-05-25 20:51:48 -04:00
|
|
|
PrelaunchInit = $EB
|
2024-05-25 19:18:49 -04:00
|
|
|
|
2024-05-26 13:41:21 -04:00
|
|
|
; addresses used by graphic effects
|
|
|
|
hgrlo = $0201 ; $C0 bytes
|
2024-05-27 13:32:07 -04:00
|
|
|
mirror_cols = $02C1 ; $28 bytes
|
2024-05-26 13:41:21 -04:00
|
|
|
hgrhi = $0301 ; $C0 bytes
|
|
|
|
hgr1hi = hgrhi
|
2024-05-27 13:32:07 -04:00
|
|
|
|
2024-05-26 13:41:21 -04:00
|
|
|
Coordinates1Bit= $8600 ; $3481 bytes ($3480 on disk + 1 byte EOF marker added at runtime)
|
|
|
|
EndCoordinates1Bit = Coordinates1Bit + $3480
|
2024-05-27 13:32:07 -04:00
|
|
|
|
2024-05-26 13:41:21 -04:00
|
|
|
Coordinates2Bit= $8100 ; $3C01 bytes ($3C00 on disk + 1 byte EOF marker added at runtime)
|
|
|
|
EndCoordinates2Bit = Coordinates2Bit + $3C00
|
2024-05-27 13:32:07 -04:00
|
|
|
|
|
|
|
Coordinates3Bit= $6D00 ; $5001 bytes ($5000 on disk + 1 byte EOF marker added at runtime)
|
2024-05-26 13:41:21 -04:00
|
|
|
EndCoordinates3Bit = Coordinates3Bit + $5000
|
|
|
|
|
2024-05-27 13:32:07 -04:00
|
|
|
hgrlomirror = $BB01 ; $C0 bytes
|
|
|
|
hgr1himirror = $BC01 ; $C0 bytes
|
2024-05-28 22:00:35 -04:00
|
|
|
dithermasks = $BDA8 ; $58 bytes, must not cross page boundary
|
2024-05-27 13:32:07 -04:00
|
|
|
evenrow_masks = dithermasks
|
|
|
|
oddrow_masks = dithermasks+2
|
|
|
|
no_masks = dithermasks+44
|
|
|
|
copymasks1bit = $BE00 ; $100 bytes but sparse, index is 0..6 but in high 3 bits, so $00,$20,$40,$60,$80,$A0,$C0
|
|
|
|
copymasks2bit = copymasks1bit ; $100 bytes but sparse, index is 0..4 but in high 3 bits, so $00,$20,$40,$60,$80
|
|
|
|
copymasks3bit = copymasks1bit ; $100 bytes but sparse, index is 0..7 but in high 3 bits, so $00,$20,$40,$60,$80,$A0,$C0,$E0
|
|
|
|
mirror_copymasks1bit = copymasks1bit+1
|
|
|
|
mirror_copymasks2bit = copymasks2bit+1
|
|
|
|
hgrlo3a = $6A00 ; $80 bytes
|
|
|
|
hgrlo3b = $6A80 ; $80 bytes
|
|
|
|
hgrlo3c = $6B00 ; $80 bytes
|
|
|
|
hgrhi3a = $6B80 ; $80 bytes
|
|
|
|
hgrhi3b = $6C00 ; $80 bytes
|
|
|
|
hgrhi3c = $BD01 ; $80 bytes
|
|
|
|
extra_cols = $BEF8 ; $08 bytes
|
|
|
|
|
|
|
|
|
2020-11-12 17:07:04 -05:00
|
|
|
_CONSTANTS_=*
|
|
|
|
}
|