diff options
author | libjet <libj3t@gmail.com> | 2020-03-15 00:17:02 +0000 |
---|---|---|
committer | libjet <libj3t@gmail.com> | 2020-03-15 00:17:02 +0000 |
commit | 76216e6ce5de8a78cfd9312eb08dbb127b4d34d0 (patch) | |
tree | daa241c9541bd7f66aea7220cd4da5efb9a8069a | |
parent | 1ddf04da73b8784a08c679b73f576923768f97cf (diff) |
Small home/ reorganization
-rw-r--r-- | home.asm | 208 | ||||
-rwxr-xr-x | home/array.asm | 44 | ||||
-rw-r--r-- | home/battle.asm | 19 | ||||
-rwxr-xr-x | home/call_regs.asm | 8 | ||||
-rw-r--r-- | home/copy.asm | 245 | ||||
-rw-r--r-- | home/copy2.asm | 53 | ||||
-rw-r--r-- | home/flag.asm | 27 | ||||
-rw-r--r-- | home/gfx.asm | 238 | ||||
-rwxr-xr-x | home/hp_pals.asm | 17 | ||||
-rw-r--r-- | home/map.asm | 8 | ||||
-rw-r--r-- | home/math.asm | 10 | ||||
-rwxr-xr-x | home/mon_party.asm (renamed from home/mon_data_2.asm) | 0 | ||||
-rw-r--r-- | home/pokedex_flags.asm | 32 | ||||
-rwxr-xr-x | home/print_text.asm | 17 | ||||
-rw-r--r-- | home/printer.asm (renamed from home/handshake.asm) | 0 | ||||
-rwxr-xr-x | home/region.asm | 62 | ||||
-rwxr-xr-x | home/sprite_anims.asm | 19 | ||||
-rwxr-xr-x | home/tilemap.asm | 20 | ||||
-rw-r--r-- | home/time_palettes.asm (renamed from home/rtc.asm) | 0 |
19 files changed, 511 insertions, 516 deletions
@@ -19,7 +19,7 @@ SECTION "Home", ROM0 INCLUDE "home/vblank.asm" INCLUDE "home/delay.asm" -INCLUDE "home/rtc.asm" +INCLUDE "home/time_palettes.asm" INCLUDE "home/fade.asm" INCLUDE "home/lcd.asm" INCLUDE "home/time.asm" @@ -28,7 +28,7 @@ INCLUDE "home/serial.asm" INCLUDE "home/joypad.asm" INCLUDE "home/decompress.asm" INCLUDE "home/palettes.asm" -INCLUDE "home/copy.asm" +INCLUDE "home/gfx.asm" INCLUDE "home/text.asm" INCLUDE "home/video.asm" INCLUDE "home/map_objects.asm" @@ -37,224 +37,30 @@ INCLUDE "home/movement.asm" INCLUDE "home/menu.asm" INCLUDE "home/menu_window.asm" INCLUDE "home/menu2.asm" -INCLUDE "home/handshake.asm" +INCLUDE "home/printer.asm" INCLUDE "home/game_time.asm" INCLUDE "home/map.asm" - -InexplicablyEmptyFunction:: ; 2e16 -; Inexplicably empty. -; Seen in PredefPointers. -rept 16 - nop -endr - ret - INCLUDE "home/farcall.asm" INCLUDE "home/predef.asm" INCLUDE "home/window.asm" INCLUDE "home/flag.asm" - -Unreferenced_CheckBPressedDebug:: -; Used in debug ROMs to walk through walls and avoid encounters. - ld a, [wDebugFlags] - bit 1, a - ret z - - ldh a, [hJoyDown] - bit 1, a - ret - -xor_a:: - xor a - ret - -xor_a_dec_a:: - xor a - dec a - ret - -Unreferenced_CheckFieldDebug:: - push hl - ld hl, wDebugFlags - bit DEBUG_FIELD_F, [hl] - pop hl - ret - INCLUDE "home/sprite_updates.asm" INCLUDE "home/string.asm" INCLUDE "home/region.asm" - -Function2ffe:: ; 2ffe (0:2ffe) - push hl - xor a - ld hl, wd17c - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, [wd17a] - ld l, a - ld a, [wd17b] - ld h, a - or l - jr z, .quit - ldh a, [hROMBank] - push af - call SwitchToMapScriptsBank - ld a, [wPlayerStandingMapX] - add $4 - ld d, a - ld a, [wPlayerStandingMapY] - ld a, $4 ; add $4 - ld e, a - push bc - ld c, $0 -.loop - ld a, [hl] - cp $ff - jr z, .done - push hl - ld a, d - cp [hl] - jr nz, .next - inc hl - ld a, e - cp [hl] - jr nz, .next - ld hl, wd17c - ld b, SET_FLAG - push de - push bc - ld d, $0 - predef SmallFarFlagAction - pop bc - pop de -.next - pop hl - inc hl - inc hl - inc hl - inc c - ld a, c - cp $20 - jr c, .loop -.done - pop bc - pop af - rst Bankswitch -.quit - pop hl - ret - INCLUDE "home/item.asm" INCLUDE "home/random.asm" INCLUDE "home/sram.asm" - -; Register aliases -_hl_:: - jp hl - -_de_:: - push de - ret - +INCLUDE "home/call_regs.asm" INCLUDE "home/clear_sprites.asm" -INCLUDE "home/copy2.asm" +INCLUDE "home/copy.asm" INCLUDE "home/copy_tilemap.asm" INCLUDE "home/copy_name.asm" - -IsInArray:: -; Find value a for every de bytes in array hl. -; Return index in b and carry if found. - - ld b, 0 - ld c, a -.loop - ld a, [hl] - cp -1 - jr z, .NotInArray - cp c - jr z, .InArray - inc b - add hl, de - jr .loop - -.NotInArray: - and a - ret - -.InArray: - scf - ret - -SkipNames:: -; Skip a names. - ld bc, NAME_LENGTH - and a - ret z -.loop - add hl, bc - dec a - jr nz, .loop - ret - +INCLUDE "home/array.asm" INCLUDE "home/math.asm" INCLUDE "home/print_text.asm" - -CallPointerAt:: - ldh a, [hROMBank] - push af - ld a, [hli] - rst Bankswitch - - ld a, [hli] - ld h, [hl] - ld l, a - - call _hl_ - - pop hl - ld a, h - rst Bankswitch - ret - INCLUDE "home/queue_script.asm" INCLUDE "home/compare.asm" INCLUDE "home/tilemap.asm" -INCLUDE "home/hp_pals.asm" - -CountSetBits:: -; Count the number of set bits in b bytes starting from hl. -; Return in a, c and [wNumSetBits]. - ld c, 0 -.next - ld a, [hli] - ld e, a - ld d, 8 - -.count - srl e - ld a, 0 - adc c - ld c, a - dec d - jr nz, .count - - dec b - jr nz, .next - - ld a, c - ld [wNumSetBits], a - ret - -GetWeekday:: - ld a, [wCurDay] -.mod - sub 7 - jr nc, .mod - add 7 - ret - INCLUDE "home/pokedex_flags.asm" INCLUDE "home/names.asm" INCLUDE "home/scrolling_menu.asm" @@ -265,7 +71,7 @@ INCLUDE "home/cry.asm" INCLUDE "home/print_level.asm" INCLUDE "home/mon_data.asm" INCLUDE "home/print_bcd.asm" -INCLUDE "home/mon_data_2.asm" +INCLUDE "home/mon_party.asm" INCLUDE "home/battle.asm" INCLUDE "home/sprite_anims.asm" INCLUDE "home/audio.asm" diff --git a/home/array.asm b/home/array.asm new file mode 100755 index 00000000..0abf9b7d --- /dev/null +++ b/home/array.asm @@ -0,0 +1,44 @@ +IsInArray:: +; Find value a for every de bytes in array hl. +; Return index in b and carry if found. + + ld b, 0 + ld c, a +.loop + ld a, [hl] + cp -1 + jr z, .NotInArray + cp c + jr z, .InArray + inc b + add hl, de + jr .loop + +.NotInArray: + and a + ret + +.InArray: + scf + ret + +SkipNames:: +; Skip a names. + ld bc, NAME_LENGTH + and a + ret z +.loop + add hl, bc + dec a + jr nz, .loop + ret + +AddNTimes:: +; Add bc * a to hl. + and a + ret z +.loop + add hl, bc + dec a + jr nz, .loop + ret diff --git a/home/battle.asm b/home/battle.asm index a7f7a558..eac378e0 100644 --- a/home/battle.asm +++ b/home/battle.asm @@ -258,3 +258,22 @@ GetBattleAnimByte:: pop hl ld a, [wca17] ret + +PushLYOverrides:: + ldh a, [hLCDCPointer] + and a + ret z + + ld a, LOW(wLYOverridesBackup) + ld [wRequested2bppSource], a + ld a, HIGH(wLYOverridesBackup) + ld [wRequested2bppSource + 1], a + + ld a, LOW(wLYOverrides) + ld [wRequested2bppDest], a + ld a, HIGH(wLYOverrides) + ld [wRequested2bppDest + 1], a + + ld a, (wLYOverridesEnd - wLYOverrides) / 28 + ld [wRequested2bpp], a + ret diff --git a/home/call_regs.asm b/home/call_regs.asm new file mode 100755 index 00000000..d0a4be1b --- /dev/null +++ b/home/call_regs.asm @@ -0,0 +1,8 @@ +; Register aliases + +_hl_:: + jp hl + +_de_:: + push de + ret diff --git a/home/copy.asm b/home/copy.asm index 0067c85f..e319cd6b 100644 --- a/home/copy.asm +++ b/home/copy.asm @@ -1,238 +1,53 @@ -Functiond70:: ; d70 (0:0d70) - ld b, a - ldh a, [hROMBank] - push af - ld a, b - rst Bankswitch - - ld a, BANK(sDecompressBuffer) - call OpenSRAM - ld hl, sDecompressBuffer - ld bc, 7 * 7 * $10 - xor a - call ByteFill - - ld hl, wcf3c +CopyBytes:: ; 311a (0:311a) + inc b + inc c + jr .asm_3121 +.asm_311e ld a, [hli] - ld h, [hl] - ld l, a - ld de, sDecompressBuffer - call Decompress - - call CloseSRAM - pop af - rst Bankswitch - ret - -ReplacePlayerSprite:: - farcall Function1413c - ret - -Functiond9e:: - farcall Functionf8000 - ret - -Functionda5:: - farcall Functionf8032 - ret - -LoadFontsExtra:: - farcall Functionf800c - ret - -DecompressRequest2bpp:: - push de - ld a, BANK(sScratch) - call OpenSRAM - push bc - - ld de, sScratch - ld a, b - call FarDecompress - - pop bc - pop hl - - ld de, sScratch - call Request2bpp - call CloseSRAM + ld [de], a + inc de +.asm_3121 + dec c + jr nz, .asm_311e + dec b + jr nz, .asm_311e ret -FarCopyBytes:: ; dcd (0:0dcd) +GetFarByte:: ; 3128 (0:3128) ld [wBuffer], a ldh a, [hROMBank] push af ld a, [wBuffer] rst Bankswitch - call CopyBytes + ld a, [hl] + ld [wBuffer], a pop af rst Bankswitch + ld a, [wBuffer] ret -FarCopyBytesDouble:: ; ddd (0:0ddd) +GetFarHalfword:: ; 313c (0:313c) ld [wBuffer], a ldh a, [hROMBank] push af ld a, [wBuffer] rst Bankswitch - ld a, h - ld h, d - ld d, a - ld a, l - ld l, e - ld e, a + ld a, [hli] + ld h, [hl] + ld l, a + pop af + rst Bankswitch + ret + +ByteFill:: ; 314c (0:314c) inc b inc c - jr .enter_loop - -.copy - ld a, [de] - inc de - ld [hli], a + jr .asm_3151 +.asm_3150 ld [hli], a -.enter_loop +.asm_3151 dec c - jr nz, .copy + jr nz, .asm_3150 dec b - jr nz, .copy - pop af - rst Bankswitch - ret - -Request2bpp:: ; dfe (0:0dfe) - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - ldh a, [hROMBank] - push af - ld a, b - rst Bankswitch - ld a, e - ld [wRequested2bppSource], a - ld a, d - ld [wRequested2bppSource + 1], a - ld a, l - ld [wRequested2bppDest], a - ld a, h - ld [wRequested2bppDest + 1], a -.check - ld a, c - cp $8 ; TilesPerCycle - jr nc, .cycle - ld [wRequested2bpp], a - call DelayFrame - pop af - rst Bankswitch - pop af - ldh [hBGMapMode], a - ret - -.cycle - ld a, $8 ; TilesPerCycle - ld [wRequested2bpp], a - call DelayFrame - ld a, c - sub $8 ; TilesPerCycle - ld c, a - jr .check - -Request1bpp:: ; e38 (0:0e38) - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - ldh a, [hROMBank] - push af - ld a, b - rst Bankswitch - ld a, e - ld [wRequested1bppSource], a - ld a, d - ld [wRequested1bppSource + 1], a - ld a, l - ld [wRequested1bppDest], a - ld a, h - ld [wRequested1bppDest + 1], a -.check - ld a, c - cp $8 ; TilesPerCycle - jr nc, .cycle - ld [wRequested1bpp], a - call DelayFrame - pop af - rst Bankswitch - pop af - ldh [hBGMapMode], a + jr nz, .asm_3150 ret - -.cycle - ld a, $8 ; TilesPerCycle - ld [wRequested1bpp], a - call DelayFrame - ld a, c - sub $8 ; TilesPerCycle - ld c, a - jr .check - -Get2bpp:: - ldh a, [rLCDC] - bit 7, a - jp nz, Request2bpp -Copy2bpp:: - push hl - ld h, d - ld l, e - pop de - ld a, b - push af - swap c - ld a, $f - and c - ld b, a - ld a, $f0 - and c - ld c, a - pop af - jp FarCopyBytes - -Get1bpp:: - ldh a, [rLCDC] - bit 7, a - jp nz, Request1bpp -Copy1bpp:: - push de - ld d, h - ld e, l - ld a, b - push af - ld h, $0 - ld l, c - add hl, hl - add hl, hl - add hl, hl - ld b, h - ld c, l - pop af - pop hl - jp FarCopyBytesDouble - -Functionea6:: - ldh a, [rLCDC] - add a - jp c, Request2bpp -Functioneac:: - push de - push hl - ld a, b - ld h, $0 - ld l, c - add hl, hl - add hl, hl - add hl, hl - add hl, hl - ld b, h - ld c, l - pop de - pop hl - jp FarCopyBytes diff --git a/home/copy2.asm b/home/copy2.asm deleted file mode 100644 index e319cd6b..00000000 --- a/home/copy2.asm +++ /dev/null @@ -1,53 +0,0 @@ -CopyBytes:: ; 311a (0:311a) - inc b - inc c - jr .asm_3121 -.asm_311e - ld a, [hli] - ld [de], a - inc de -.asm_3121 - dec c - jr nz, .asm_311e - dec b - jr nz, .asm_311e - ret - -GetFarByte:: ; 3128 (0:3128) - ld [wBuffer], a - ldh a, [hROMBank] - push af - ld a, [wBuffer] - rst Bankswitch - ld a, [hl] - ld [wBuffer], a - pop af - rst Bankswitch - ld a, [wBuffer] - ret - -GetFarHalfword:: ; 313c (0:313c) - ld [wBuffer], a - ldh a, [hROMBank] - push af - ld a, [wBuffer] - rst Bankswitch - ld a, [hli] - ld h, [hl] - ld l, a - pop af - rst Bankswitch - ret - -ByteFill:: ; 314c (0:314c) - inc b - inc c - jr .asm_3151 -.asm_3150 - ld [hli], a -.asm_3151 - dec c - jr nz, .asm_3150 - dec b - jr nz, .asm_3150 - ret diff --git a/home/flag.asm b/home/flag.asm index 2b455439..5eef8fe1 100644 --- a/home/flag.asm +++ b/home/flag.asm @@ -103,3 +103,30 @@ CheckReceivedDex:: ld a, c and a ret + +Unreferenced_CheckBPressedDebug:: +; Used in debug ROMs to walk through walls and avoid encounters. + + ld a, [wDebugFlags] + bit 1, a + ret z + + ldh a, [hJoyDown] + bit 1, a + ret + +xor_a:: + xor a + ret + +xor_a_dec_a:: + xor a + dec a + ret + +Unreferenced_CheckFieldDebug:: + push hl + ld hl, wDebugFlags + bit DEBUG_FIELD_F, [hl] + pop hl + ret
\ No newline at end of file diff --git a/home/gfx.asm b/home/gfx.asm new file mode 100644 index 00000000..0067c85f --- /dev/null +++ b/home/gfx.asm @@ -0,0 +1,238 @@ +Functiond70:: ; d70 (0:0d70) + ld b, a + ldh a, [hROMBank] + push af + ld a, b + rst Bankswitch + + ld a, BANK(sDecompressBuffer) + call OpenSRAM + ld hl, sDecompressBuffer + ld bc, 7 * 7 * $10 + xor a + call ByteFill + + ld hl, wcf3c + ld a, [hli] + ld h, [hl] + ld l, a + ld de, sDecompressBuffer + call Decompress + + call CloseSRAM + pop af + rst Bankswitch + ret + +ReplacePlayerSprite:: + farcall Function1413c + ret + +Functiond9e:: + farcall Functionf8000 + ret + +Functionda5:: + farcall Functionf8032 + ret + +LoadFontsExtra:: + farcall Functionf800c + ret + +DecompressRequest2bpp:: + push de + ld a, BANK(sScratch) + call OpenSRAM + push bc + + ld de, sScratch + ld a, b + call FarDecompress + + pop bc + pop hl + + ld de, sScratch + call Request2bpp + call CloseSRAM + ret + +FarCopyBytes:: ; dcd (0:0dcd) + ld [wBuffer], a + ldh a, [hROMBank] + push af + ld a, [wBuffer] + rst Bankswitch + call CopyBytes + pop af + rst Bankswitch + ret + +FarCopyBytesDouble:: ; ddd (0:0ddd) + ld [wBuffer], a + ldh a, [hROMBank] + push af + ld a, [wBuffer] + rst Bankswitch + ld a, h + ld h, d + ld d, a + ld a, l + ld l, e + ld e, a + inc b + inc c + jr .enter_loop + +.copy + ld a, [de] + inc de + ld [hli], a + ld [hli], a +.enter_loop + dec c + jr nz, .copy + dec b + jr nz, .copy + pop af + rst Bankswitch + ret + +Request2bpp:: ; dfe (0:0dfe) + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + ldh a, [hROMBank] + push af + ld a, b + rst Bankswitch + ld a, e + ld [wRequested2bppSource], a + ld a, d + ld [wRequested2bppSource + 1], a + ld a, l + ld [wRequested2bppDest], a + ld a, h + ld [wRequested2bppDest + 1], a +.check + ld a, c + cp $8 ; TilesPerCycle + jr nc, .cycle + ld [wRequested2bpp], a + call DelayFrame + pop af + rst Bankswitch + pop af + ldh [hBGMapMode], a + ret + +.cycle + ld a, $8 ; TilesPerCycle + ld [wRequested2bpp], a + call DelayFrame + ld a, c + sub $8 ; TilesPerCycle + ld c, a + jr .check + +Request1bpp:: ; e38 (0:0e38) + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + ldh a, [hROMBank] + push af + ld a, b + rst Bankswitch + ld a, e + ld [wRequested1bppSource], a + ld a, d + ld [wRequested1bppSource + 1], a + ld a, l + ld [wRequested1bppDest], a + ld a, h + ld [wRequested1bppDest + 1], a +.check + ld a, c + cp $8 ; TilesPerCycle + jr nc, .cycle + ld [wRequested1bpp], a + call DelayFrame + pop af + rst Bankswitch + pop af + ldh [hBGMapMode], a + ret + +.cycle + ld a, $8 ; TilesPerCycle + ld [wRequested1bpp], a + call DelayFrame + ld a, c + sub $8 ; TilesPerCycle + ld c, a + jr .check + +Get2bpp:: + ldh a, [rLCDC] + bit 7, a + jp nz, Request2bpp +Copy2bpp:: + push hl + ld h, d + ld l, e + pop de + ld a, b + push af + swap c + ld a, $f + and c + ld b, a + ld a, $f0 + and c + ld c, a + pop af + jp FarCopyBytes + +Get1bpp:: + ldh a, [rLCDC] + bit 7, a + jp nz, Request1bpp +Copy1bpp:: + push de + ld d, h + ld e, l + ld a, b + push af + ld h, $0 + ld l, c + add hl, hl + add hl, hl + add hl, hl + ld b, h + ld c, l + pop af + pop hl + jp FarCopyBytesDouble + +Functionea6:: + ldh a, [rLCDC] + add a + jp c, Request2bpp +Functioneac:: + push de + push hl + ld a, b + ld h, $0 + ld l, c + add hl, hl + add hl, hl + add hl, hl + add hl, hl + ld b, h + ld c, l + pop de + pop hl + jp FarCopyBytes diff --git a/home/hp_pals.asm b/home/hp_pals.asm deleted file mode 100755 index f8c51b4f..00000000 --- a/home/hp_pals.asm +++ /dev/null @@ -1,17 +0,0 @@ -SetHPPal:: -; Set palette for hp bar pixel length e at hl. - call GetHPPal - ld [hl], d - ret - -GetHPPal:: -; Get palette for hp bar pixel length e in d. - ld d, HP_GREEN - ld a, e - cp (HP_BAR_LENGTH_PX * 50 / 100) ; 24 - ret nc - inc d ; HP_YELLOW - cp (HP_BAR_LENGTH_PX * 21 / 100) ; 10 - ret nc - inc d ; HP_RED - ret
\ No newline at end of file diff --git a/home/map.asm b/home/map.asm index 5a35ffab..e961c0ff 100644 --- a/home/map.asm +++ b/home/map.asm @@ -2427,3 +2427,11 @@ LoadTilesetHeader:: ; 2dfa (0:2dfa) pop bc pop hl ret + +InexplicablyEmptyFunction:: ; 2e16 +; Inexplicably empty. +; Seen in PredefPointers. +rept 16 + nop +endr + ret diff --git a/home/math.asm b/home/math.asm index 71de08f9..6daa2ed9 100644 --- a/home/math.asm +++ b/home/math.asm @@ -1,13 +1,3 @@ -AddNTimes:: -; Add bc * a to hl. - and a - ret z -.loop - add hl, bc - dec a - jr nz, .loop - ret - SimpleMultiply:: ; Return a * c. and a diff --git a/home/mon_data_2.asm b/home/mon_party.asm index 5da498c8..5da498c8 100755 --- a/home/mon_data_2.asm +++ b/home/mon_party.asm diff --git a/home/pokedex_flags.asm b/home/pokedex_flags.asm index 424fee13..fe866ba9 100644 --- a/home/pokedex_flags.asm +++ b/home/pokedex_flags.asm @@ -1,3 +1,35 @@ +CountSetBits:: +; Count the number of set bits in b bytes starting from hl. +; Return in a, c and [wNumSetBits]. + ld c, 0 +.next + ld a, [hli] + ld e, a + ld d, 8 + +.count + srl e + ld a, 0 + adc c + ld c, a + dec d + jr nz, .count + + dec b + jr nz, .next + + ld a, c + ld [wNumSetBits], a + ret + +GetWeekday:: + ld a, [wCurDay] +.mod + sub 7 + jr nc, .mod + add 7 + ret + SetSeenAndCaughtMon:: push af ld c, a diff --git a/home/print_text.asm b/home/print_text.asm index b140b0de..9d80d6b4 100755 --- a/home/print_text.asm +++ b/home/print_text.asm @@ -146,4 +146,21 @@ FarPrintText:: pop af rst Bankswitch + ret + +CallPointerAt:: + ldh a, [hROMBank] + push af + ld a, [hli] + rst Bankswitch + + ld a, [hli] + ld h, [hl] + ld l, a + + call _hl_ + + pop hl + ld a, h + rst Bankswitch ret
\ No newline at end of file diff --git a/home/handshake.asm b/home/printer.asm index f4e8c7d3..f4e8c7d3 100644 --- a/home/handshake.asm +++ b/home/printer.asm diff --git a/home/region.asm b/home/region.asm index e6391fb4..b3242336 100755 --- a/home/region.asm +++ b/home/region.asm @@ -29,4 +29,66 @@ IsInJohto:: .Kanto: ld a, 1 + ret + +Function2ffe:: ; 2ffe (0:2ffe) + push hl + xor a + ld hl, wd17c + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld a, [wd17a] + ld l, a + ld a, [wd17b] + ld h, a + or l + jr z, .quit + ldh a, [hROMBank] + push af + call SwitchToMapScriptsBank + ld a, [wPlayerStandingMapX] + add $4 + ld d, a + ld a, [wPlayerStandingMapY] + ld a, $4 ; add $4 + ld e, a + push bc + ld c, $0 +.loop + ld a, [hl] + cp $ff + jr z, .done + push hl + ld a, d + cp [hl] + jr nz, .next + inc hl + ld a, e + cp [hl] + jr nz, .next + ld hl, wd17c + ld b, SET_FLAG + push de + push bc + ld d, $0 + predef SmallFarFlagAction + pop bc + pop de +.next + pop hl + inc hl + inc hl + inc hl + inc c + ld a, c + cp $20 + jr c, .loop +.done + pop bc + pop af + rst Bankswitch +.quit + pop hl ret
\ No newline at end of file diff --git a/home/sprite_anims.asm b/home/sprite_anims.asm index 190f4a4f..5f1d46f3 100755 --- a/home/sprite_anims.asm +++ b/home/sprite_anims.asm @@ -1,22 +1,3 @@ -PushLYOverrides:: - ldh a, [hLCDCPointer] - and a - ret z - - ld a, LOW(wLYOverridesBackup) - ld [wRequested2bppSource], a - ld a, HIGH(wLYOverridesBackup) - ld [wRequested2bppSource + 1], a - - ld a, LOW(wLYOverrides) - ld [wRequested2bppDest], a - ld a, HIGH(wLYOverrides) - ld [wRequested2bppDest + 1], a - - ld a, (wLYOverridesEnd - wLYOverrides) / 28 - ld [wRequested2bpp], a - ret - InitAnimatedObjectStruct:: ld [wAnimatedObjectStructIDBuffer], a ldh a, [hROMBank] diff --git a/home/tilemap.asm b/home/tilemap.asm index cac86189..04cbd474 100755 --- a/home/tilemap.asm +++ b/home/tilemap.asm @@ -198,4 +198,22 @@ GetSGBLayout:: ret z .sgb - predef_jump LoadSGBLayout
\ No newline at end of file + predef_jump LoadSGBLayout + +SetHPPal:: +; Set palette for hp bar pixel length e at hl. + call GetHPPal + ld [hl], d + ret + +GetHPPal:: +; Get palette for hp bar pixel length e in d. + ld d, HP_GREEN + ld a, e + cp (HP_BAR_LENGTH_PX * 50 / 100) ; 24 + ret nc + inc d ; HP_YELLOW + cp (HP_BAR_LENGTH_PX * 21 / 100) ; 10 + ret nc + inc d ; HP_RED + ret
\ No newline at end of file diff --git a/home/rtc.asm b/home/time_palettes.asm index 5cbd1f04..5cbd1f04 100644 --- a/home/rtc.asm +++ b/home/time_palettes.asm |