shithub: pokered

Download patch

ref: 4b64b146e4d723980d26470d171fb18e63f4a215
parent: 506a14084e32d7532b8400a6457f46492bbc47ab
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Apr 13 16:08:07 EDT 2021

Use assertions to catch the GetName bug, and use a NAME_BUFFER_LENGTH constant

--- a/constants/text_constants.asm
+++ b/constants/text_constants.asm
@@ -1,5 +1,6 @@
 NAME_LENGTH EQU 11
 ITEM_NAME_LENGTH EQU 13
+NAME_BUFFER_LENGTH EQU 20
 
 ; PrintNumber
 	const_def 5
--- a/engine/movie/oak_speech/oak_speech2.asm
+++ b/engine/movie/oak_speech/oak_speech2.asm
@@ -210,7 +210,7 @@
 	ld h, d
 	ld l, e
 	ld de, wcd6d
-	ld bc, $14
+	ld bc, NAME_BUFFER_LENGTH
 	jp CopyData
 
 INCLUDE "data/player_names_list.asm"
--- a/home/names2.asm
+++ b/home/names2.asm
@@ -20,6 +20,12 @@
 
 	; TM names are separate from item names.
 	; BUG: This applies to all names instead of just items.
+	assert NUM_POKEMON_INDEXES < HM01, \
+		"A bug in GetName will get TM/HM names for Pokémon above ${x:HM01}."
+	assert NUM_ATTACKS < HM01, \
+		"A bug in GetName will get TM/HM names for moves above ${x:HM01}."
+	assert NUM_TRAINERS < HM01, \
+		"A bug in GetName will get TM/HM names for trainers above ${x:HM01}."
 	cp HM01
 	jp nc, GetMachineName
 
@@ -28,10 +34,10 @@
 	push hl
 	push bc
 	push de
-	ld a, [wNameListType]    ;List3759_entrySelector
+	ld a, [wNameListType]
 	dec a
 	jr nz, .otherEntries
-	;1 = MON_NAMES
+	; 1 = MONSTER_NAME
 	call GetMonName
 	ld hl, NAME_LENGTH
 	add hl, de
@@ -39,11 +45,11 @@
 	ld d, h
 	jr .gotPtr
 .otherEntries
-	;2-7 = OTHER ENTRIES
+	; 2-7 = other names
 	ld a, [wPredefBank]
 	ldh [hLoadedROMBank], a
 	ld [MBC1RomBank], a
-	ld a, [wNameListType]    ;VariousNames' entryID
+	ld a, [wNameListType]
 	dec a
 	add a
 	ld d, 0
@@ -62,8 +68,8 @@
 	ldh a, [hSwapTemp + 1]
 	ld l, a
 	ld a, [wd0b5]
-	ld b, a
-	ld c, 0
+	ld b, a ; wanted entry
+	ld c, 0 ; entry counter
 .nextName
 	ld d, h
 	ld e, l
@@ -71,14 +77,14 @@
 	ld a, [hli]
 	cp "@"
 	jr nz, .nextChar
-	inc c           ;entry counter
-	ld a, b          ;wanted entry
+	inc c
+	ld a, b
 	cp c
 	jr nz, .nextName
 	ld h, d
 	ld l, e
 	ld de, wcd6d
-	ld bc, $14
+	ld bc, NAME_BUFFER_LENGTH
 	call CopyData
 .gotPtr
 	ld a, e
--- a/wram.asm
+++ b/wram.asm
@@ -1173,7 +1173,11 @@
 
 UNION
 
-wcd6d:: ds 4 ; buffer for various data
+wcd6d:: ds NAME_BUFFER_LENGTH ; buffer for various data
+
+NEXTU
+
+	ds 4
 
 wStatusScreenCurrentPP::
 ; temp variable used to print a move's current PP on the status screen