diff options
Diffstat (limited to 'engine/palettes.asm')
-rwxr-xr-x | engine/palettes.asm | 735 |
1 files changed, 642 insertions, 93 deletions
diff --git a/engine/palettes.asm b/engine/palettes.asm index 55d488aa..080998ff 100755 --- a/engine/palettes.asm +++ b/engine/palettes.asm @@ -19,22 +19,30 @@ _RunPaletteCommand: ; 71ddf (1c:5ddf) push de jp [hl] -SetPal_BattleBlack: ; 71dff (1c:5dff) +SetPal_Black: ; 71ed3 (1c:5ed3) ld hl, PalPacket_Black ld de, BlkPacket_Battle ret ; uses PalPacket_Empty to build a packet based on mon IDs and health color -SetPal_Battle: ; 71e06 (1c:5e06) +SetPal_Battle: ; 71eda (1c:5eda) ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 call CopyData - ld a, [W_PLAYERBATTSTATUS3] + ;ld a, [W_PLAYERBATTSTATUS3] ld hl, wBattleMonSpecies + ld a, [hl] + and a + jr z, .asm_71ef9 + ld hl, wPartyMon1 + ld a, [wPlayerMonNumber] + ld bc, wPartyMon2 - wPartyMon1 + call AddNTimes +.asm_71ef9 call DeterminePaletteID ld b, a - ld a, [W_ENEMYBATTSTATUS3] + ;ld a, [W_ENEMYBATTSTATUS3] ld hl, wEnemyMonSpecies2 call DeterminePaletteID ld c, a @@ -58,13 +66,13 @@ SetPal_Battle: ; 71e06 (1c:5e06) ld [wDefaultPaletteCommand], a ret -SetPal_TownMap: ; 71e48 (1c:5e48) +SetPal_TownMap: ; 71f26 (1c:5f26) ld hl, PalPacket_TownMap ld de, BlkPacket_WholeScreen ret ; uses PalPacket_Empty to build a packet based the mon ID -SetPal_StatusScreen: ; 71e4f (1c:5e4f) +SetPal_StatusScreen: ; 71f2d (1c:5f2d) ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -87,12 +95,12 @@ SetPal_StatusScreen: ; 71e4f (1c:5e4f) ld de, BlkPacket_StatusScreen ret -SetPal_PartyMenu: ; 71e7b (1c:5e7b) +SetPal_PartyMenu: ; 71f59 (1c:5f59) ld hl, PalPacket_PartyMenu ld de, wPartyMenuBlkPacket ret -SetPal_Pokedex: ; 71e82 (1c:5e82) +SetPal_Pokedex: ; 71f60 (1c:5f60) ld hl, PalPacket_Pokedex ld de, wPalPacket ld bc, $10 @@ -105,28 +113,28 @@ SetPal_Pokedex: ; 71e82 (1c:5e82) ld de, BlkPacket_Pokedex ret -SetPal_Slots: ; 71e9f (1c:5e9f) +SetPal_Slots: ; 71f7d (1c:5f7d) ld hl, PalPacket_Slots ld de, BlkPacket_Slots ret -SetPal_TitleScreen: ; 71ea6 (1c:5ea6) +SetPal_Titlescreen: ; 71f84 (1c:5f84) ld hl, PalPacket_Titlescreen ld de, BlkPacket_Titlescreen ret ; used mostly for menus and the Oak intro -SetPal_Generic: ; 71ead (1c:5ead) +SetPal_Generic: ; 71f8b (1c:5f8b) ld hl, PalPacket_Generic ld de, BlkPacket_WholeScreen ret -SetPal_NidorinoIntro: ; 71eb4 (1c:5eb4) +SetPal_NidorinoIntro: ; 71f92 (1c:5f92) ld hl, PalPacket_NidorinoIntro ld de, BlkPacket_NidorinoIntro ret -SetPal_GameFreakIntro: ; 71ebb (1c:5ebb) +SetPal_GameFreakIntro: ; 71f99 (1c:5f99) ld hl, PalPacket_GameFreakIntro ld de, BlkPacket_GameFreakIntro ld a, SET_PAL_GENERIC @@ -134,7 +142,7 @@ SetPal_GameFreakIntro: ; 71ebb (1c:5ebb) ret ; uses PalPacket_Empty to build a packet based on the current map -SetPal_Overworld: ; 71ec7 (1c:5ec7) +SetPal_Overworld: ; 71fa5 (1c:5fa5) ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -155,6 +163,10 @@ SetPal_Overworld: ; 71ec7 (1c:5ec7) jr z, .Lorelei cp BRUNOS_ROOM jr z, .caveOrBruno + cp BATTLE_CENTER + jr z,.asm_71ffd + cp TRADE_CENTER + jr z,.asm_71ffd .normalDungeonOrBuilding ld a, [wLastMap] ; town or route that current dungeon or building is located .townOrRoute @@ -178,10 +190,13 @@ SetPal_Overworld: ; 71ec7 (1c:5ec7) .Lorelei xor a jr .town - +.asm_71ffd + ld a,$18 + jr .town + ; used when a Pokemon is the only thing on the screen ; such as evolution, trading and the Hall of Fame -SetPal_PokemonWholeScreen: ; 71f17 (1c:5f17) +SetPal_PokemonWholeScreen: ; 72001 (1c:6001) push bc ld hl, PalPacket_Empty ld de, wPalPacket @@ -200,7 +215,7 @@ SetPal_PokemonWholeScreen: ; 71f17 (1c:5f17) ld de, BlkPacket_WholeScreen ret -SetPal_TrainerCard: ; 71f3b (1c:5f3b) +SetPal_TrainerCard: ; 72025 (1c:6025) ld hl, BlkPacket_TrainerCard ld de, wTrainerCardBlkPacket ld bc, $40 @@ -240,14 +255,25 @@ SetPal_TrainerCard: ; 71f3b (1c:5f3b) ld de, wTrainerCardBlkPacket ret -SetPalFunctions: ; 71f73 (1c:5f73) - dw SetPal_BattleBlack +<<<<<<< HEAD +SendUnknownPalPacket_7205d:: ; 7205d (1c:605d) + ld hl,UnknownPalPacket_72811 + ld de,BlkPacket_WholeScreen + ret + +SendUnknownPalPacket_72064:: ; 72064 (1c:6064) + ld hl,UnknownPalPacket_72821 + ld de,UnknownPacket_72751 + ret + +SetPalFunctions: ; 7206b (1c:606b) + dw SetPal_Black dw SetPal_Battle dw SetPal_TownMap dw SetPal_StatusScreen dw SetPal_Pokedex dw SetPal_Slots - dw SetPal_TitleScreen + dw SetPal_Titlescreen dw SetPal_NidorinoIntro dw SetPal_Generic dw SetPal_Overworld @@ -255,10 +281,12 @@ SetPalFunctions: ; 71f73 (1c:5f73) dw SetPal_PokemonWholeScreen dw SetPal_GameFreakIntro dw SetPal_TrainerCard + dw SendUnknownPalPacket_7205d + dw SendUnknownPalPacket_72064 ; The length of the blk data of each badge on the Trainer Card. ; The Rainbow Badge has 3 entries because of its many colors. -BadgeBlkDataLengths: ; 71f8f (1c:5f8f) +BadgeBlkDataLengths: ; 7208b (1c:608b) db 6 ; Boulder Badge db 6 ; Cascade Badge db 6 ; Thunder Badge @@ -268,12 +296,9 @@ BadgeBlkDataLengths: ; 71f8f (1c:5f8f) db 6 ; Volcano Badge db 6 ; Earth Badge -DeterminePaletteID: ; 71f97 (1c:5f97) - bit Transformed, a ; a is battle status 3 - ld a, PAL_GREYMON ; if the mon has used Transform, use Ditto's palette - ret nz +DeterminePaletteID: ; 72093 (1c:6093) ld a, [hl] -DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d) +DeterminePaletteIDOutOfBattle: ; 72094 (1c:6094) ld [wd11e], a and a ; is the mon index 0? jr z, .skipDexNumConversion @@ -289,13 +314,134 @@ DeterminePaletteIDOutOfBattle: ; 71f9d (1c:5f9d) ld a, [hl] ret -InitPartyMenuBlkPacket: ; 71fb6 (1c:5fb6) +<<<<<<< HEAD +Func_720ad:: ; 720ad (1c:60ad) + ld a,e + and a + jr nz,Func_720bd + ld hl,PalPacket_Generic + ld a,[hGBC] + and a + jp z,Func_721b4 + jp Func_72346 + +Func_720bd:: ; 720bd (1c:60bd) + ld hl,UnknownPalPacket_72811 + ld a,[hGBC] + and a + jp z,Func_721b4 + call Func_72346 + ld hl,PalPacket_Generic + inc hl + ld a,[hli] + call Func_723fe + ld a,e + ld [wdee4],a + ld a,d + ld [wdee5],a + xor a + call Func_7240f + ld a,$1 + call Func_72470 + ret + +Func_720e3:: ; 720e3 (1c:60e3) + ld hl,PalPacket_Empty + ld de,wcf2d + ld bc,$10 + call CopyData + call Func_7213b + ld hl,wcf2e + ld [hl],a + ld hl,wcf30 + ld a,$26 + ld [hl],a + ld hl,wcf2d + ld a,[hGBC] + and a + jr nz,.asm_72109 + call Func_721b4 + jr .asm_7210c +.asm_72109 + call Func_72346 +.asm_7210c + ld hl,BlkPacket_WholeScreen + ld de,wcf2d + ld bc,$10 + call CopyData + ld hl,wcf30 + ld a,$5 + ld [hli],a + ld a,$7 + ld [hli],a + ld a,$6 + ld [hli],a + ld a,$b + ld [hli],a + ld a,$a + ld [hl],a + ld hl,wcf2d + ld a,[hGBC] + and a + jr nz,.asm_72137 + call Func_721b4 + jr .asm_7213a +.asm_72137 + call Func_72346 +.asm_7213a + ret + +Func_7213b:: ; 7213b (1c:613b) +; similar to SetPal_Overworld + ld a, [W_CURMAPTILESET] + cp CEMETERY + jr z, .PokemonTowerOrAgatha + cp CAVERN + jr z, .caveOrBruno + ld a, [W_CURMAP] + cp REDS_HOUSE_1F + jr c, .townOrRoute + cp UNKNOWN_DUNGEON_2 + jr c, .normalDungeonOrBuilding + cp NAME_RATERS_HOUSE + jr c, .caveOrBruno + cp LORELEIS_ROOM + jr z, .Lorelei + cp BRUNOS_ROOM + jr z, .caveOrBruno + cp BATTLE_CENTER + jr z,.battleOrTradeCenter + cp TRADE_CENTER + jr z,.battleOrTradeCenter +.normalDungeonOrBuilding + ld a, [wLastMap] ; town or route that current dungeon or building is located +.townOrRoute + cp SAFFRON_CITY + 1 + jr c, .town + ld a, PAL_ROUTE - 1 +.town + inc a ; a town's pallete ID is its map ID + 1 + ret +.PokemonTowerOrAgatha + ld a, PAL_GREYMON - 1 + jr .town +.caveOrBruno + ld a, PAL_CAVE - 1 + jr .town +.Lorelei + xor a + jr .town +.battleOrTradeCenter + ld a,$18 + jr .town + +InitPartyMenuBlkPacket: ; 7217f (1c:617f) ld hl, BlkPacket_PartyMenu ld de, wPartyMenuBlkPacket ld bc, $30 jp CopyData -UpdatePartyMenuBlkPacket: ; 71fc2 (1c:5fc2) +UpdatePartyMenuBlkPacket: ; 7218b (1c:618b) ; Update the blk packet with the palette of the HP bar that is ; specified in [wWhichPartyMenuHPBar]. ld hl, wPartyMenuHPBarColors @@ -323,6 +469,17 @@ UpdatePartyMenuBlkPacket: ; 71fc2 (1c:5fc2) ld [hl], e ret +Func_721b4: ; 721b4 (1c:61b4) + ld a,$1 +; load a non-zero value in $fff9 to disable the routine that checks actual +; joypad input (said routine, located at $15f, does nothing if $fff9 is not +; zero) + ld [hReadJoypad],a + call SendSGBPacket + xor a + ld [hReadJoypad],a + ret + SendSGBPacket: ; 71feb (1c:5feb) ;check number of packets ld a,[hl] @@ -333,9 +490,6 @@ SendSGBPacket: ; 71feb (1c:5feb) .loop2 ; save B for later use push bc -; disable ReadJoypad to prevent it from interfering with sending the packet - ld a, 1 - ld [hDisableJoypadPolling], a ; send RESET signal (P14=LOW, P15=LOW) xor a ld [rJOYP],a @@ -376,10 +530,9 @@ SendSGBPacket: ; 71feb (1c:5feb) ; set P14=HIGH,P15=HIGH ld a,$30 ld [rJOYP],a - xor a - ld [hDisableJoypadPolling],a + call Wait7000 ; wait for about 70000 cycles - call Wait7000 +; call Wait7000 ; restore (previously pushed) number of packets pop bc dec b @@ -388,18 +541,21 @@ SendSGBPacket: ; 71feb (1c:5feb) ; else send 16 more bytes jr .loop2 -LoadSGB: ; 7202b (1c:602b) +LoadSGB: ; 721f8 (1c:61f8) xor a ld [wOnSGB], a call CheckSGB - ret nc - ld a, 1 - ld [wOnSGB], a - ld a, [wGBC] + jr c, .onSGB + ld a, [hGBC] and a - jr z, .notGBC + jr z, .onDMG + ld a, $1 + ld [wOnSGB], a +.onDMG ret -.notGBC +.onSGB + ld a, $1 + ld [wOnSGB], a di call PrepareSuperNintendoVRAMTransfer ei @@ -420,9 +576,9 @@ LoadSGB: ; 7202b (1c:602b) call CopyGfxToSuperNintendoVRAM call ClearVram ld hl, MaskEnCancelPacket - jp SendSGBPacket + jp Func_721b4 -PrepareSuperNintendoVRAMTransfer: ; 72075 (1c:6075) +PrepareSuperNintendoVRAMTransfer: ; 72247 (1c:6247) ld hl, .packetPointers ld c, 9 .loop @@ -431,7 +587,7 @@ PrepareSuperNintendoVRAMTransfer: ; 72075 (1c:6075) push hl ld h, [hl] ld l, a - call SendSGBPacket + call Func_721b4 pop hl inc hl pop bc @@ -439,26 +595,21 @@ PrepareSuperNintendoVRAMTransfer: ; 72075 (1c:6075) jr nz, .loop ret -.packetPointers +.packetPointers ; 7225b (1c:625b) ; Only the first packet is needed. dw MaskEnFreezePacket - dw DataSnd_72548 - dw DataSnd_72558 - dw DataSnd_72568 - dw DataSnd_72578 - dw DataSnd_72588 - dw DataSnd_72598 - dw DataSnd_725a8 - dw DataSnd_725b8 - -CheckSGB: ; 7209b (1c:609b) -; Returns whether the game is running on an SGB in carry. + dw DataSnd_728a1 + dw DataSnd_728b1 + dw DataSnd_728c1 + dw DataSnd_728d1 + dw DataSnd_728e1 + dw DataSnd_728f1 + dw DataSnd_72901 + dw DataSnd_72911 + +CheckSGB: ; 7226d (1c:626d) ld hl, MltReq2Packet - di - call SendSGBPacket - ld a, 1 - ld [hDisableJoypadPolling], a - ei + call Func_721b4 call Wait7000 ld a, [rJOYP] and $3 @@ -503,17 +654,18 @@ CheckSGB: ; 7209b (1c:609b) scf ret -SendMltReq1Packet: ; 72102 (1c:6102) +SendMltReq1Packet: ; 722ce (1c:62ce) ld hl, MltReq1Packet - call SendSGBPacket + call Func_721b4 jp Wait7000 -CopyGfxToSuperNintendoVRAM: ; 7210b (1c:610b) +CopyGfxToSuperNintendoVRAM: ; 722d7 (1c:62d7) di push de call DisableLCD ld a, $e4 - ld [rBGP], a + ld [rBGP], a ; $ff47 + call Func_72520 ld de, vChars1 ld a, [wCopyingSGBTileData] and a @@ -541,13 +693,14 @@ CopyGfxToSuperNintendoVRAM: ; 7210b (1c:610b) ld a, $e3 ld [rLCDC], a pop hl - call SendSGBPacket + call Func_721b4 xor a - ld [rBGP], a + ld [rBGP], a ; $ff47 + call Func_72520 ei ret -Wait7000: ; 7214a (1c:614a) +Wait7000: ; 7231c (1c:631c) ; Each loop takes 9 cycles so this routine actually waits 63000 cycles. ld de, 7000 .loop @@ -560,56 +713,451 @@ Wait7000: ; 7214a (1c:614a) jr nz, .loop ret -SendSGBPackets: ; 72156 (1c:6156) - ld a, [wGBC] +SendSGBPackets: ; 72328 (1c:6328) + ld a, [hGBC] and a jr z, .notGBC push de call InitGBCPalettes pop hl - call EmptyFunc5 + call InitGBCPalettes + ld a,[rLCDC] + and rLCDC_ENABLE_MASK + ret z + call Delay3 ret .notGBC push de - call SendSGBPacket + call Func_721b4 pop hl - jp SendSGBPacket + jp Func_721b4 -InitGBCPalettes: ; 7216d (1c:616d) - ld a, $80 ; index 0 with auto-increment - ld [rBGPI], a +InitGBCPalettes: ; 72346 (1c:6346) + ld a,[hl] + and $f8 + cp $20 + jp z,Func_725be inc hl - ld c, $20 -.loop - ld a, [hli] + ld a,[hli] + inc hl + push hl + call Func_723fe + ld a,e + ld [wdee2],a + ld a,d + ld [wdee3],a + + xor a + call Func_7240f + ld a,$0 + call Func_72470 + ld a,$1 + call Func_7240f + ld a,$0 + call Func_724df + ld a,$2 + call Func_7240f + ld a,$4 + call Func_724df + + pop hl + ld a,[hli] + inc hl + push hl + call Func_723fe + ld a,e + ld [wdee4],a + ld a,d + ld [wdee5],a + + xor a + call Func_7240f + ld a,$1 + call Func_72470 + ld a,$1 + call Func_7240f + ld a,$1 + call Func_724df + ld a,$2 + call Func_7240f + ld a,$5 + call Func_724df + + pop hl + ld a,[hli] + inc hl + push hl + call Func_723fe + ld a,e + ld [wdee6],a + ld a,d + ld [wdee7],a + + xor a + call Func_7240f + ld a,$2 + call Func_72470 + ld a,$1 + call Func_7240f + ld a,$2 + call Func_724df + ld a,$2 + call Func_7240f + ld a,$6 + call Func_724df + + pop hl + ld a,[hli] inc hl + call Func_723fe + ld a,e + ld [wdee8],a + ld a,d + ld [wdee9],a + + xor a + call Func_7240f + ld a,$3 + call Func_72470 + ld a,$1 + call Func_7240f + ld a,$3 + call Func_724df + ld a,$2 + call Func_7240f + ld a,$7 + call Func_724df + + ret + +Func_723fe:: ; 723fe (1c:63fe) + push hl + ld l,a + xor a + ld h,a + add hl,hl + add hl,hl + add hl,hl + ld de,Pointer_72af9 ; not exactly sure if actually super palettes + add hl,de + ld a,l + ld e,a + ld a,h + ld d,a + pop hl + ret + +Func_7240f:: ; 7240f (1c:640f) + and a + jr nz,.asm_72419 + ld a,[rBGP] + ld [wdef2],a + jr .asm_72428 +.asm_72419 + dec a + jr nz,.asm_72423 + ld a,[rOBP0] + ld [wdef3],a + jr .asm_72428 +.asm_72423 + ld a,[rOBP1] + ld [wdef4],a +.asm_72428 + ld b,a + and $3 + call Func_7246a + ld a,[hli] + ld [wdeea],a + ld a,[hl] + ld [wdeeb],a + ld a,b + rrca + rrca + ld b,a + and $3 + call Func_7246a + ld a,[hli] + ld [wdeec],a + ld a,[hl] + ld [wdeed],a + ld a,b + rrca + rrca + ld b,a + and $3 + call Func_7246a + ld a,[hli] + ld [wdeee],a + ld a,[hl] + ld [wdeef],a + ld a,b + rrca + rrca + ld b,a + and $3 + call Func_7246a + ld a,[hli] + ld [wdef0],a + ld a,[hl] + ld [wdef1],a + ret + +Func_7246a:: ; 7246a (1c:646a) add a + ld l,a + xor a + ld h,a + add hl,de + ret + +Func_72470:: ; 72470 (1c:6470) + push de add a add a - ld de, SuperPalettes - add e - jr nc, .noCarry - inc d -.noCarry - ld a, [de] - ld [rBGPD], a +<<<<<<< HEAD + add a + or $80 + ld [rBGPI],a + ld de,rBGPD + ld hl,wdeea + ld b,$2 + ld a,[rLCDC] + and rLCDC_ENABLE_MASK + jr nz,.lcdenabled + rept 4 + call Func_7251b + endr + jr .done +.lcdenabled + rept 4 + call Func_72511 + endr +.done + pop de + ret + +Func_724a2:: ; 724a2 (1c:64a2) + push de + add a + add a + add a + ld l,a + xor a + ld h,a + ld de,wdef6 + add hl,de + ld de,wdeea + ld c,$8 +.loop + ld a,[de] + ld [hli],a + inc de dec c - jr nz, .loop + jr nz,.loop + pop de ret -EmptyFunc5: ; 72187 (1c:6187) +PreparePalDataTransfer:: ; 724ba (1c:64ba) +; wait for vblank period unless LCD is disabled + ld a,[rLCDC] + and rLCDC_ENABLE_MASK + jr z,.lcddisabled + di +.waitloop + ld a,[rLY] + cp 144 + jr c,.waitloop +.lcddisabled + call TransferPalData + ei ret -CopySGBBorderTiles: ; 72188 (1c:6188) +TransferPalData: ; 724cc (1c:64cc) + xor a + or $80 + ld [rBGPI], a + ld de,rBGPD + ld hl,wdef6 + ld c,$20 +.loop + ld a,[hli] + ld [de],a + dec c + jr nz,.loop + ret + +Func_724df: ; 724df (1c:64df) + push de + add a + add a + add a + or $80 + ld [rOBPI],a + ld de,rOBPD + ld hl,wdeea + ld b,$2 ; searching oam STAT mode + ld a,[rLCDC] + and rLCDC_ENABLE_MASK + jr nz,.lcdenabled + rept 4 + call Func_7251b + endr + jr .done +.lcdenabled + rept 4 + call Func_72511 + endr +.done + pop de + ret + +Func_72511: ; 72511 (1c:6511) + ld a,[rSTAT] + and b + jr z,Func_72511 ; wait if either in hblank or vblank period +.notinhblank + ld a,[rSTAT] + and b + jr nz,.notinhblank ; wait if transferring oam or data to lcd driver +Func_7251b: ; 7251b (1c:651b) + ld a,[hli] + ld [de],a + ld a,[hli] + ld [de],a + ret + +Func_72520:: ; 72520 (1c:6520) + ld a,[hGBC] + and a + ret z +; fallthrough +Func_72524:: ; 72524 (1c:6524) + ld a,[wdee2] + ld e,a + ld a,[wdee3] + ld d,a + xor a + call Func_7240f + ld a,$0 + call Func_724a2 + ld a,[wdee4] + ld e,a + ld a,[wdee5] + ld d,a + xor a + call Func_7240f + ld a,$1 + call Func_724a2 + ld a,[wdee6] + ld e,a + ld a,[wdee7] + ld d,a + xor a + call Func_7240f + ld a,$2 + call Func_724a2 + ld a,[wdee8] + ld e,a + ld a,[wdee9] + ld d,a + xor a + call Func_7240f + ld a,$3 + call Func_724a2 + call PreparePalDataTransfer + ret + +Func_7256c:: ; 7256c (1c:656c) + ld a,[wdee2] + ld e,a + ld a,[wdee3] + ld d,a + ld a,c + call Func_7240f + ld a,c + dec a + rlca + rlca + call Func_724df + ld a,[wdee4] + ld e,a + ld a,[wdee5] + ld d,a + ld a,c + call Func_7240f + ld a,c + dec a + rlca + rlca + inc a + call Func_724df + ld a,[wdee6] + ld e,a + ld a,[wdee7] + ld d,a + ld a,c + call Func_7240f + ld a,c + dec a + rlca + rlca + add $2 + call Func_724df + ld a,[wdee8] + ld e,a + ld a,[wdee9] + ld d,a + ld a,c + call Func_7240f + ld a,c + dec a + rlca + rlca + add $3 + call Func_724df + ret + +Func_725be:: ; 725be (1c:65be) + push hl + pop de + ld hl,Pointer_725e2 + ld a,[hli] + ld c,a +.asm_725c5 + ld a,e +.loop + cp [hl] + jr z,.asm_725cf + inc hl + inc hl + dec c + jr nz,.loop + ret +.asm_725cf + inc hl + ld a,d + cp [hl] + jr z,.asm_725d9 + inc hl + dec c + jr nz,.asm_725c5 + ret +.asm_725d9 + callba Func_bf450 ; 2f:7250 + ret + +Pointer_725e2:: ; 725e2 (1c:65e2) + db $0c,$11,$66,$21,$66,$41,$66,$51,$66,$61,$66,$81,$66,$a1,$66,$2d + db $cf,$5b,$cc,$31,$67,$2c,$cf,$51,$67 + +CopySGBBorderTiles: ; 725fb (1c:65fb) ; SGB tile data is stored in a 4BPP planar format. ; Each tile is 32 bytes. The first 16 bytes contain bit planes 1 and 2, while ; the second 16 bytes contain bit planes 3 and 4. ; This function converts 2BPP planar data into this format by mapping ; 2BPP colors 0-3 to 4BPP colors 0-3. 4BPP colors 4-15 are not used. ld b, 128 - -.tileLoop - +.loop ; Copy bit planes 1 and 2 of the tile data. ld c, 16 .copyLoop @@ -632,10 +1180,11 @@ CopySGBBorderTiles: ; 72188 (1c:6188) jr nz, .tileLoop ret + ;dr $725e2,$734b9 INCLUDE "data/sgb_packets.asm" INCLUDE "data/mon_palettes.asm" INCLUDE "data/super_palettes.asm" -INCLUDE "data/sgb_border.asm" +INCLUDE "data/sgb_border.asm"
\ No newline at end of file |