;-------------------------------------------------------------------------------- ; Hash Alphabet ; ALPHA_BOW = $0000 ; ALPHA_BOOM = $0001 ; ALPHA_HOOK = $0002 ; ALPHA_BOMB = $0003 ; ALPHA_SHROOM = $0004 ; ALPHA_POWDER = $0005 ; ALPHA_ROD = $0006 ; ALPHA_PENDANT = $0007 ; ALPHA_BOMBOS = $0008 ; ALPHA_ETHER = $0009 ; ALPHA_QUAKE = $000A ; ALPHA_LAMP = $000B ; ALPHA_HAMMER = $000C ; ALPHA_SHOVEL = $000D ; ALPHA_FLUTE = $000E ; ALPHA_NET = $000F ; ALPHA_BOOK = $0010 ; ALPHA_BOTTLE = $0011 ; ALPHA_POTION = $0012 ; ALPHA_CANE = $0013 ; ALPHA_CAPE = $0014 ; ALPHA_MIRROR = $0015 ; ALPHA_BOOTS = $0016 ; ALPHA_GLOVES = $0017 ; ALPHA_FLIPPERS = $0018 ; ALPHA_PEARL = $0019 ; ALPHA_SHIELD = $001A ; ALPHA_TUNIC = $001B ; ALPHA_HEART = $001C ; ALPHA_MAP = $001D ; ALPHA_COMPASS = $001E ; ALPHA_KEY = $001F ;-------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------- LoadAlphabetTilemap: PHB : PHA : PHX : PHY : PHP PHK : PLB SEP #$10 ; 8-bit index registers REP #$20 ; 16-bit accumulator LDX.b #$00 : - LDA.w FileSelect_PlayerSelectText_Top, X STA.l BigRAM, X INX #2 CPX.b #128 : !BLT - LDY.b #00 LDX.b #$00 : - PHX : TYX : LDA.l SeedHash, X : PLX AND.w #$001F ; mask to alphabet of 32 ASL #3 : PHY : TAY LDA.w HashAlphabetTiles,Y : STA.l BigRAM+24, X LDA.w HashAlphabetTiles+2,Y : STA.l BigRAM+24+2, X LDA.w HashAlphabetTiles+4,Y : STA.l BigRAM+24+64, X LDA.w HashAlphabetTiles+6,Y : STA.l BigRAM+24+64+2, X PLY : INX #6 : INY CPX.b #25 : !BLT - SEP #$20 ; 8-bit accumulator JSR DMAAlphabetTilemap PLP : PLY : PLX : PLA : PLB RTL ;-------------------------------------------------------------------------------- ; DMAAlphabetTilemap: ;-------------------------------------------------------------------------------- DMAAlphabetTilemap: PHA : PHX LDA.w DMAP0 : PHA ; preserve DMA parameters LDA.w BBAD0 : PHA ; preserve DMA parameters LDA.w A1T0L : PHA ; preserve DMA parameters LDA.w A1T0H : PHA ; preserve DMA parameters LDA.w A1B0 : PHA ; preserve DMA parameters LDA.w DAS0L : PHA ; preserve DMA parameters LDA.w DAS0H : PHA ; preserve DMA parameters ;-------------------------------------------------------------------------------- LDA.b #$01 : STA.w DMAP0 ; set DMA transfer direction A -> B, bus A auto increment, double-byte mode LDA.b #$80 : STA.w VMAIN ; write read increment on $2119 LDA.b #$18 : STA.w BBAD0 ; set bus B destination to VRAM register LDA.b #$60 : STA.w VMADDL ; write VRAM destination address STA.w VMADDH ; write VRAM destination address LDA.b #BigRAM : STA.w A1T0L ; set bus A source address to WRAM LDA.b #BigRAM>>8 : STA.w A1T0H ; set bus A source address to WRAM LDA.b #BigRAM>>16 : STA.w A1B0 ; set bus A source bank LDA.b #$80 : STA.w DAS0L : STZ.w DAS0H ; set transfer size to 0x40 LDA.w INIDISP : PHA : LDA.b #$80 : STA.w INIDISP ; save screen state & turn screen off LDA.b #$01 : STA.w MDMAEN ; begin DMA transfer PLA : STA.w INIDISP ; put screen back however it was before ;-------------------------------------------------------------------------------- PLA : STA.w DAS0H ; restore DMA parameters PLA : STA.w DAS0L ; restore DMA parameters PLA : STA.w A1B0 ; restore DMA parameters PLA : STA.w A1T0H ; restore DMA parameters PLA : STA.w A1T0L ; restore DMA parameters PLA : STA.w BBAD0 ; restore DMA parameters PLA : STA.w DMAP0 ; restore DMA parameters PLX : PLA RTS ;-------------------------------------------------------------------------------- HashAlphabetTilesWithBlank: ;BLANK dw #$0186|!FS_COLOR_BW, #$0186|!FS_COLOR_BW, #$0196|!FS_COLOR_BW, #$0196|!FS_COLOR_BW HashAlphabetTiles: ;BOW dw #$0201|!FS_COLOR_YELLOW, #$0202|!FS_COLOR_YELLOW, #$0211|!FS_COLOR_YELLOW, #$0212|!FS_COLOR_YELLOW ;BOOM dw #$0205|!FS_COLOR_BLUE, #$0206|!FS_COLOR_BLUE, #$0200|!FS_COLOR_BW, #$0216|!FS_COLOR_BLUE ;HOOK dw #$0200|!FS_COLOR_RED, #$0215|!FS_COLOR_RED, #$0230|!FS_COLOR_RED, #$0200|!FS_COLOR_BW ;BOMB dw #$020C|!FS_COLOR_BLUE, #$020D|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE, #$021C|!FS_COLOR_BLUE|!FS_HFLIP ;SHROOM dw #$0262|!FS_COLOR_RED, #$0263|!FS_COLOR_RED, #$0272|!FS_COLOR_RED, #$0273|!FS_COLOR_RED ;POWDER dw #$020A|!FS_COLOR_BROWN, #$020B|!FS_COLOR_BROWN, #$021A|!FS_COLOR_BROWN, #$021B|!FS_COLOR_BROWN ;ROD dw #$0220|!FS_COLOR_BLUE, #$0221|!FS_COLOR_BLUE, #$0230|!FS_COLOR_BLUE, #$0231|!FS_COLOR_BLUE ;PENDANT dw #$0285|!FS_COLOR_GREEN, #$0286|!FS_COLOR_GREEN, #$0295|!FS_COLOR_GREEN, #$0296|!FS_COLOR_GREEN ;BOMBOS dw #$0207|!FS_COLOR_YELLOW, #$0217|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0217|!FS_COLOR_YELLOW, #$0207|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;ETHER dw #$0208|!FS_COLOR_YELLOW, #$0218|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0218|!FS_COLOR_YELLOW, #$0208|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;QUAKE dw #$0209|!FS_COLOR_YELLOW, #$0219|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP, #$0219|!FS_COLOR_YELLOW, #$0209|!FS_COLOR_YELLOW|!FS_HFLIP|!FS_VFLIP ;LAMP dw #$022C|!FS_COLOR_RED, #$022C|!FS_COLOR_RED|!FS_HFLIP, #$023C|!FS_COLOR_RED, #$023D|!FS_COLOR_RED ;HAMMER dw #$0222|!FS_COLOR_BROWN, #$0223|!FS_COLOR_BROWN, #$0232|!FS_COLOR_BROWN, #$0233|!FS_COLOR_BROWN ;SHOVEL dw #$0224|!FS_COLOR_BROWN, #$0225|!FS_COLOR_BROWN, #$0234|!FS_COLOR_BROWN, #$0235|!FS_COLOR_BROWN ;FLUTE dw #$0226|!FS_COLOR_BLUE, #$0227|!FS_COLOR_BLUE, #$0236|!FS_COLOR_BLUE, #$0237|!FS_COLOR_BLUE ;NET dw #$0228|!FS_COLOR_YELLOW, #$0229|!FS_COLOR_YELLOW, #$0238|!FS_COLOR_YELLOW, #$0239|!FS_COLOR_YELLOW ;BOOK dw #$022A|!FS_COLOR_GREEN, #$022B|!FS_COLOR_GREEN, #$023A|!FS_COLOR_GREEN, #$023B|!FS_COLOR_GREEN ;BOTTLE dw #$0240|!FS_COLOR_BW, #$0241|!FS_COLOR_BW, #$0250|!FS_COLOR_BW, #$0251|!FS_COLOR_BW ;POTION dw #$0242|!FS_COLOR_GREEN, #$0242|!FS_COLOR_GREEN|!FS_HFLIP, #$0252|!FS_COLOR_GREEN, #$0253|!FS_COLOR_GREEN ;CANE dw #$021D|!FS_COLOR_RED, #$021E|!FS_COLOR_RED, #$022D|!FS_COLOR_RED, #$022E|!FS_COLOR_RED ;CAPE dw #$0248|!FS_COLOR_RED, #$0249|!FS_COLOR_RED, #$0258|!FS_COLOR_RED, #$0259|!FS_COLOR_RED ;MIRROR dw #$024A|!FS_COLOR_BLUE, #$024B|!FS_COLOR_BLUE, #$025A|!FS_COLOR_BLUE, #$025B|!FS_COLOR_BLUE ;BOOTS dw #$024C|!FS_COLOR_BOOTS, #$024D|!FS_COLOR_BOOTS, #$025C|!FS_COLOR_BOOTS, #$025D|!FS_COLOR_BOOTS ;GLOVES dw #$024E|!FS_COLOR_BROWN, #$024F|!FS_COLOR_BROWN, #$025E|!FS_COLOR_BROWN, #$025F|!FS_COLOR_BROWN ;FLIPPERS dw #$020E|!FS_COLOR_BLUE, #$020F|!FS_COLOR_BLUE, #$021F|!FS_COLOR_BLUE|!FS_HFLIP, #$021F|!FS_COLOR_BLUE ;PEARL dw #$0264|!FS_COLOR_RED, #$0265|!FS_COLOR_RED, #$0274|!FS_COLOR_RED, #$0275|!FS_COLOR_RED ;SHIELD dw #$026D|!FS_COLOR_YELLOW, #$026E|!FS_COLOR_YELLOW, #$027D|!FS_COLOR_YELLOW, #$027E|!FS_COLOR_YELLOW ;TUNIC dw #$026F|!FS_COLOR_GREEN, #$026F|!FS_COLOR_GREEN|!FS_HFLIP, #$027F|!FS_COLOR_GREEN, #$027F|!FS_COLOR_GREEN|!FS_HFLIP ;HEART dw #$0281|!FS_COLOR_RED, #$0281|!FS_COLOR_RED|!FS_HFLIP, #$0291|!FS_COLOR_RED, #$0291|!FS_COLOR_RED|!FS_HFLIP ;MAP dw #$0282|!FS_COLOR_YELLOW, #$0283|!FS_COLOR_YELLOW, #$0292|!FS_COLOR_YELLOW, #$0293|!FS_COLOR_YELLOW ;COMPASS dw #$0284|!FS_COLOR_RED, #$0284|!FS_COLOR_RED|!FS_HFLIP, #$0294|!FS_COLOR_RED, #$0294|!FS_COLOR_RED|!FS_HFLIP ;KEY dw #$022F|!FS_COLOR_YELLOW|!FS_HFLIP, #$022F|!FS_COLOR_YELLOW, #$023E|!FS_COLOR_YELLOW, #$023F|!FS_COLOR_YELLOW ;-------------------------------------------------------------------------------- FileSelect_PlayerSelectText_Top: ;db $60, $62, $00, $37 dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE dw !FSTILE_BRACKET_OPEN_TOP dw !FSTILE_SPACE, !FSTILE_C_TOP dw !FSTILE_O_TOP dw !FSTILE_D_TOP dw !FSTILE_E_TOP dw !FSTILE_SPACE, !FSTILE_SPACE dw $05A0, $05A1 dw !FSTILE_SPACE, $05A4, $05A5 dw !FSTILE_SPACE, $05A8, $05A9 dw !FSTILE_SPACE, $05AC, $05AD dw !FSTILE_SPACE, $05B0, $05B1 dw !FSTILE_SPACE dw !FSTILE_BRACKET_CLOSE_TOP dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE ;-------------------------------------------------------------------------------- FileSelect_PlayerSelectText_Bottom: ;db $60, $82, $00, $37 dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE dw !FSTILE_BRACKET_OPEN_BOTTOM dw !FSTILE_SPACE, !FSTILE_C_BOTTOM dw !FSTILE_O_BOTTOM dw !FSTILE_D_BOTTOM dw !FSTILE_E_BOTTOM dw !FSTILE_SPACE, !FSTILE_SPACE dw $05A2, $05A3 dw !FSTILE_SPACE, $05A6, $05A7 dw !FSTILE_SPACE, $05AA, $05AB dw !FSTILE_SPACE, $05AE, $05AF dw !FSTILE_SPACE, $05B2, $05B3 dw !FSTILE_SPACE dw !FSTILE_BRACKET_CLOSE_BOTTOM dw !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE, !FSTILE_SPACE ;--------------------------------------------------------------------------------