summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlibjet <libj3t@gmail.com>2020-03-15 00:17:02 +0000
committerlibjet <libj3t@gmail.com>2020-03-15 00:17:02 +0000
commit76216e6ce5de8a78cfd9312eb08dbb127b4d34d0 (patch)
treedaa241c9541bd7f66aea7220cd4da5efb9a8069a
parent1ddf04da73b8784a08c679b73f576923768f97cf (diff)
Small home/ reorganization
-rw-r--r--home.asm208
-rwxr-xr-xhome/array.asm44
-rw-r--r--home/battle.asm19
-rwxr-xr-xhome/call_regs.asm8
-rw-r--r--home/copy.asm245
-rw-r--r--home/copy2.asm53
-rw-r--r--home/flag.asm27
-rw-r--r--home/gfx.asm238
-rwxr-xr-xhome/hp_pals.asm17
-rw-r--r--home/map.asm8
-rw-r--r--home/math.asm10
-rwxr-xr-xhome/mon_party.asm (renamed from home/mon_data_2.asm)0
-rw-r--r--home/pokedex_flags.asm32
-rwxr-xr-xhome/print_text.asm17
-rw-r--r--home/printer.asm (renamed from home/handshake.asm)0
-rwxr-xr-xhome/region.asm62
-rwxr-xr-xhome/sprite_anims.asm19
-rwxr-xr-xhome/tilemap.asm20
-rw-r--r--home/time_palettes.asm (renamed from home/rtc.asm)0
19 files changed, 511 insertions, 516 deletions
diff --git a/home.asm b/home.asm
index 644bfc67..25a714fc 100644
--- a/home.asm
+++ b/home.asm
@@ -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