shithub: pokecrystal

Download patch

ref: fce6243b432d1df1b4ab244023be738a54dbe8f3
parent: e171c84c2990df2c1a3773885297089869a0fd58
author: Rangi <[email protected]>
date: Wed Jul 1 09:13:49 EDT 2020

Identify more labels, and use the jumptable macro when possible

--- a/data/items/mom_phone.asm
+++ b/data/items/mom_phone.asm
@@ -25,3 +25,5 @@
 	momitem  50000,  8000, MOM_DOLL, DECO_PIKACHU_DOLL
 	momitem 100000, 22800, MOM_DOLL, DECO_BIG_SNORLAX_DOLL
 .End
+
+	dt 0 ; unused
--- a/engine/events/battle_tower/battle_tower.asm
+++ b/engine/events/battle_tower/battle_tower.asm
@@ -204,16 +204,7 @@
 	ret
 
 .do_dw
-	ld a, [wBattleTowerBattleEnded]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .dw, wBattleTowerBattleEnded
 
 .dw
 	dw RunBattleTowerTrainer
@@ -625,16 +616,7 @@
 	ret
 
 .DoJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .dw, wJumptableIndex
 
 .dw
 	dw .Jumptable_0
@@ -869,16 +851,7 @@
 	db "れきだいりーダーいちらん@"
 
 BattleTowerAction:
-	ld a, [wScriptVar]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .dw, wScriptVar
 
 .dw
 	dw BattleTowerAction_CheckExplanationRead
--- a/engine/events/field_moves.asm
+++ b/engine/events/field_moves.asm
@@ -154,16 +154,7 @@
 INCBIN "gfx/overworld/cut_grass.2bpp"
 
 OWCutJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .dw, wJumptableIndex
 
 .dw
 	dw Cut_SpawnAnimateTree
--- a/engine/events/magnet_train.asm
+++ b/engine/events/magnet_train.asm
@@ -272,16 +272,7 @@
 	ret
 
 MagnetTrain_Jumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw .InitPlayerSpriteAnim
--- a/engine/events/mom.asm
+++ b/engine/events/mom.asm
@@ -18,19 +18,9 @@
 	ret
 
 .RunJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .dw
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .dw, wJumptableIndex
 
 .dw
-
 	dw .CheckIfBankInitialized
 	dw .InitializeBank
 	dw .IsThisAboutYourMoney
@@ -98,7 +88,7 @@
 	ld hl, MomBankWhatDoYouWantToDoText
 	call PrintText
 	call LoadStandardMenuHeader
-	ld hl, MenuHeader_0x166b5
+	ld hl, BankOfMom_MenuHeader
 	call CopyMenuHeader
 	call VerticalMenu
 	call CloseWindow
@@ -659,13 +649,13 @@
 Mom_HeldString:
 	db "HELD@"
 
-MenuHeader_0x166b5:
+BankOfMom_MenuHeader:
 	db MENU_BACKUP_TILES ; flags
 	menu_coords 0, 0, 10, 10
-	dw MenuData_0x166bd
+	dw .MenuData
 	db 1 ; default option
 
-MenuData_0x166bd:
+.MenuData:
 	db STATICMENU_CURSOR ; flags
 	db 4 ; items
 	db "GET@"
--- a/engine/events/mom_phone.asm
+++ b/engine/events/mom_phone.asm
@@ -204,8 +204,6 @@
 
 INCLUDE "data/items/mom_phone.asm"
 
-	db 0, 0, 0 ; unused
-
 MomHiHowAreYouText:
 	text_far _MomHiHowAreYouText
 	text_end
--- a/engine/games/card_flip.asm
+++ b/engine/games/card_flip.asm
@@ -75,16 +75,7 @@
 	ret
 
 .CardFlip:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw .AskPlayWithThree
--- a/engine/games/unown_puzzle.asm
+++ b/engine/games/unown_puzzle.asm
@@ -169,16 +169,7 @@
 	ret
 
 UnownPuzzleJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw .Function
--- a/engine/menus/debug.asm
+++ b/engine/menus/debug.asm
@@ -230,16 +230,7 @@
 	jr nz, .asm_81aab
 
 .asm_81a8b
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_81acf
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable Jumptable_81acf, wJumptableIndex
 
 .asm_81a9a
 	call Function81eca
--- a/engine/menus/naming_screen.asm
+++ b/engine/menus/naming_screen.asm
@@ -363,16 +363,7 @@
 	ret
 
 .RunJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw .InitCursor
@@ -1050,16 +1041,7 @@
 	ret
 
 .DoJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw .init_blinking_cursor
--- a/engine/menus/options_menu.asm
+++ b/engine/menus/options_menu.asm
@@ -91,16 +91,7 @@
 	db "CANCEL@"
 
 GetOptionPointer:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Pointers
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Pointers, wJumptableIndex
 
 .Pointers:
 ; entries correspond to OPT_* constants
--- a/engine/movie/intro.asm
+++ b/engine/movie/intro.asm
@@ -384,16 +384,7 @@
 	ret
 
 IntroSceneJumper:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, IntroScenes
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable IntroScenes, wJumptableIndex
 
 IntroScenes:
 	dw IntroScene1
--- a/engine/movie/trade_animation.asm
+++ b/engine/movie/trade_animation.asm
@@ -228,16 +228,7 @@
 	ret
 
 .DoTradeAnimCommand:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .JumpTable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .JumpTable, wJumptableIndex
 
 .JumpTable:
 ; entries correspond to macros/scripts/trade_anims.asm enumeration
--- a/engine/pokegear/pokegear.asm
+++ b/engine/pokegear/pokegear.asm
@@ -432,16 +432,7 @@
 	ret
 
 PokegearJumptable:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 ; entries correspond to POKEGEARSTATE_* constants
--- a/engine/pokegear/radio.asm
+++ b/engine/pokegear/radio.asm
@@ -16,16 +16,7 @@
 	ld [wCurRadioLine], a
 .ok
 ; Jump to the currently loaded station.  The index to which we need to jump is in wCurRadioLine.
-	ld a, [wCurRadioLine]
-	ld e, a
-	ld d, 0
-	ld hl, RadioJumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable RadioJumptable, wCurRadioLine
 
 RadioJumptable:
 ; entries correspond to constants/radio_constants.asm
--- a/engine/printer/printer_serial.asm
+++ b/engine/printer/printer_serial.asm
@@ -16,16 +16,7 @@
 	ret
 
 PrinterJumptableIteration:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw Print_InitPrinterHandshake ; 00
--- a/engine/tilesets/timeofday_pals.asm
+++ b/engine/tilesets/timeofday_pals.asm
@@ -224,16 +224,7 @@
 	dc 3, 2, 1, 0
 
 GetTimePalette:
-	ld a, [wTimeOfDay]
-	ld e, a
-	ld d, 0
-	ld hl, .TimePalettes
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .TimePalettes, wTimeOfDay
 
 .TimePalettes:
 	dw .MorningPalette
--- a/home/init.asm
+++ b/home/init.asm
@@ -50,7 +50,7 @@
 	ldh [rOBP1], a
 	ldh [rTMA], a
 	ldh [rTAC], a
-	ld [WRAM1_Begin], a
+	ld [wd000], a
 
 	ld a, %100 ; Start timer at 4096Hz
 	ldh [rTAC], a
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -237,7 +237,7 @@
 	ld a, [hl]
 	cp -1
 	jr z, .timeofday_always
-	ld hl, .TimeOfDayValues_191e
+	ld hl, .TimesOfDay
 	ld a, [wTimeOfDay]
 	add l
 	ld l, a
@@ -257,7 +257,7 @@
 	and a
 	ret
 
-.TimeOfDayValues_191e:
+.TimesOfDay:
 ; entries correspond to TimeOfDay values
 	db MORN
 	db DAY
@@ -362,7 +362,7 @@
 	call CopyBytes
 	ret
 
-Function19b8: ; unreferenced
+DeleteFollowerMapObject: ; unreferenced
 	call GetMapObject
 	ld hl, MAPOBJECT_OBJECT_STRUCT_ID
 	add hl, bc
@@ -376,7 +376,7 @@
 	pop af
 	cp -1
 	ret z
-	cp $d
+	cp NUM_OBJECT_STRUCTS
 	ret nc
 	ld b, a
 	ld a, [wObjectFollow_Leader]
--- a/macros/code.asm
+++ b/macros/code.asm
@@ -11,7 +11,11 @@
 ; Design patterns
 
 jumptable: MACRO
+if "\2" == "hl"
+	ld a, [hl]
+else
 	ld a, [\2]
+endc
 	ld e, a
 	ld d, 0
 	ld hl, \1
--- a/mobile/fixed_words.asm
+++ b/mobile/fixed_words.asm
@@ -2455,16 +2455,7 @@
 AnimateEZChatCursor:
 	ld hl, SPRITEANIMSTRUCT_0C
 	add hl, bc
-	ld a, [hl]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, hl
 
 .Jumptable:
 	dw .zero
--- a/mobile/mobile_42.asm
+++ b/mobile/mobile_42.asm
@@ -351,16 +351,7 @@
 	ret
 
 .ExecuteMobileTradeAnimCommand:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw GetMobileTradeAnimByte ; 00
--- a/mobile/mobile_45_sprite_engine.asm
+++ b/mobile/mobile_45_sprite_engine.asm
@@ -354,16 +354,7 @@
 	ret
 
 Function1161b8:
-	ld a, [wc319]
-	ld e, a
-	ld d, 0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wc319
 
 .Jumptable:
 	dw Function1161d5
--- a/mobile/mobile_45_stadium.asm
+++ b/mobile/mobile_45_stadium.asm
@@ -81,16 +81,7 @@
 	ret
 
 Function117719:
-	ld a, [wcd49]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_117728
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable Jumptable_117728, wcd49
 
 Jumptable_117728:
 	dw Function117738
@@ -553,16 +544,7 @@
 	ret
 
 Function117ae9:
-	ld a, [wJumptableIndex]
-	ld e, a
-	ld d, $0
-	ld hl, .Jumptable
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable .Jumptable, wJumptableIndex
 
 .Jumptable:
 	dw Function117b06
--- a/mobile/mobile_5c.asm
+++ b/mobile/mobile_5c.asm
@@ -346,16 +346,7 @@
 	ret
 
 Function171a36:
-	ld a, [wcd49]
-	ld e, a
-	ld d, 0
-	ld hl, Jumptable_171a45
-	add hl, de
-	add hl, de
-	ld a, [hli]
-	ld h, [hl]
-	ld l, a
-	jp hl
+	jumptable Jumptable_171a45, wcd49
 
 Jumptable_171a45:
 	dw Function171a95
--- a/wram.asm
+++ b/wram.asm
@@ -1661,8 +1661,9 @@
 
 SECTION "WRAM 1", WRAMX
 
-wGBCOnlyDecompressBuffer:: ds 1 ; also uses the next $53f bytes for $540 total
+wGBCOnlyDecompressBuffer:: ; a $540-byte buffer that continues past this SECTION
 
+wd000:: db
 wDefaultSpawnpoint:: db
 
 UNION