shithub: pokecrystal

Download patch

ref: 82f1534925c5fe1f0d876ea88119b0121cfa65a6
parent: 7aef59841489ea449b9a34d424c681a4b48b88ab
author: pikalaxalt <[email protected]>
date: Sat Apr 30 17:20:12 EDT 2016

Copycat labels; macro for the Crystal-only Unown chamber unlock words

--- a/battle/core.asm
+++ b/battle/core.asm
@@ -6048,7 +6048,7 @@
 	jr .loop
 
 .done
-	and a
+	and a ; This is probably a bug, and will result in a move with PP Up confusing the game.
 	ret nz
 
 .force_struggle
--- a/battle/effect_commands.asm
+++ b/battle/effect_commands.asm
@@ -1541,11 +1541,6 @@
 	and a
 	jr z, CheckTypeMatchup
 	ld hl, BattleMonType1
-
-	; fallthrough
-; 347d3
-
-
 CheckTypeMatchup: ; 347d3
 	push hl
 	push de
--- a/engine/map_object_action.asm
+++ b/engine/map_object_action.asm
@@ -274,12 +274,12 @@
 
 Function45c5: ; 45c5
 	ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
-	ld d, FACING_17
+	ld d, FACING_17 ; symmetric
 	cp SPRITE_BIG_SNORLAX
 	jr z, .ok
 	cp SPRITE_BIG_LAPRAS
 	jr z, .ok
-	ld d, FACING_16
+	ld d, FACING_16 ; asymmetric
 
 .ok
 	ld hl, OBJECT_FACING_STEP
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -23,7 +23,7 @@
 	push af
 	res 7, [hl]
 	set 6, [hl]
-	call RunCallback_04
+	call MapCallbackSprites_LoadUsedSpritesGFX
 	pop af
 	ld [wSpriteFlags], a
 	ret
@@ -35,7 +35,7 @@
 	push af
 	set 7, [hl]
 	res 6, [hl]
-	call RunCallback_04
+	call MapCallbackSprites_LoadUsedSpritesGFX
 	pop af
 	ld [wSpriteFlags], a
 	ret
@@ -43,7 +43,7 @@
 
 RefreshSprites:: ; 14168
 	call .Refresh
-	call RunCallback_04
+	call MapCallbackSprites_LoadUsedSpritesGFX
 	ret
 ; 1416f
 
@@ -165,7 +165,7 @@
 ; 14209
 
 
-RunCallback_04: ; 14209
+MapCallbackSprites_LoadUsedSpritesGFX: ; 14209
 	ld a, MAPCALLBACK_SPRITES
 	call RunMapCallback
 	call GetUsedSprites
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -114,7 +114,7 @@
 	add_special RandomPhoneRareWildMon
 	add_special RandomPhoneWildMon
 	add_special RandomPhoneMon
-	add_special RunCallback_04
+	add_special MapCallbackSprites_LoadUsedSpritesGFX
 	add_special PlaySlowCry
 	add_special SpecialSnorlaxAwake
 	add_special Special_YoungerHaircutBrother
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -341,7 +341,7 @@
 	push hl
 	ld a, [hl]
 	ld hl, wCurrSpriteAddSubFlags
-	bit 5, [hl]
+	bit 5, [hl] ; x flip
 	jr z, .ok
 	; 8 - a
 	add $8
@@ -573,7 +573,7 @@
 	db SPRITE_ANIM_FRAMESET_18, SPRITE_ANIM_SEQ_12, $00 ; 12
 	db SPRITE_ANIM_FRAMESET_19, SPRITE_ANIM_SEQ_13, $00 ; 13
 	db SPRITE_ANIM_FRAMESET_1A, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
-	db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15
+	db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15 chris on magnet train
 	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
 	db SPRITE_ANIM_FRAMESET_1E, SPRITE_ANIM_SEQ_NULL, $00 ; 17
 	db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves
@@ -583,7 +583,7 @@
 	db SPRITE_ANIM_FRAMESET_20, SPRITE_ANIM_SEQ_13, $00 ; 1c
 	db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
 	db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e
-	db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f
+	db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f kris on magnet train
 	db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20
 	db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21
 	db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22
--- a/event/unown.asm
+++ b/event/unown.asm
@@ -107,18 +107,18 @@
 
 Special_DisplayUnownWords: ; 8ae68
 	ld a, [ScriptVar]
-	ld hl, MenuDataHeader_0x8aed5
+	ld hl, .MenuDataHeader_Escape
 	and a
-	jr z, .asm_8ae79
+	jr z, .load
 
 	ld d, $0
 	ld e, $5
-.asm_8ae75
+.loop
 	add hl, de
 	dec a
-	jr nz, .asm_8ae75
+	jr nz, .loop
 
-.asm_8ae79
+.load
 	call LoadMenuDataHeader
 	xor a
 	ld [hBGMapMode], a
@@ -127,29 +127,27 @@
 	call ApplyTilemap
 	call MenuBoxCoord2Tile
 	inc hl
-	ld d, $0
-	ld e, $14
-rept 2
+	ld d, 0
+	ld e, SCREEN_WIDTH
 	add hl, de
-endr
+	add hl, de
 	ld a, [ScriptVar]
 	ld c, a
-	ld de, Unknown_8aebc
+	ld de, .UnownText
 	and a
-	jr z, .asm_8aea5
-.asm_8ae9c
+	jr z, .copy
+.loop2
 	ld a, [de]
 	inc de
 	cp $ff
-	jr nz, .asm_8ae9c
+	jr nz, .loop2
 	dec c
-	jr nz, .asm_8ae9c
-
-.asm_8aea5
-	call Function8af09
+	jr nz, .loop2
+.copy
+	call .CopyWord
 	ld bc, AttrMap - TileMap
 	add hl, bc
-	call Function8aee9
+	call .FillAttr
 	call WaitBGMap2
 	call JoyWaitAorB
 	call PlayClickSFX
@@ -157,59 +155,91 @@
 	ret
 ; 8aebc
 
-Unknown_8aebc: ; 8aebc
-	db $08, $44, $04, $00, $2e, $08, $ff
-	db $26, $20, $0c, $0e, $46, $ff
-	db $4c, $00, $46, $08, $42, $ff
-	db $0e, $2c, $64, $2c, $0e, $ff
+.UnownText: ; 8aebc
+
+unownwall: MACRO
+rept _NARG
+if \1 == "-"
+x = $64
+else
+if \1 >= "Y"
+x = 2 * (\1 - "Y") + $60
+else
+if \1 >= "Q"
+x = 2 * (\1 - "Q") + $40
+else
+if \1 >= "I"
+x = 2 * (\1 - "I") + $20
+else
+x = 2 * (\1 - "A")
+endc
+endc
+endc
+endc
+	db x
+shift
+endr
+	db $ff
+endm
+
+.UnownText_Escape:
+	; db      $08, $44, $04, $00, $2e, $08, $ff
+	unownwall "E", "S", "C", "A", "P", "E"
+.UnownText_Light:
+	; db      $26, $20, $0c, $0e, $46, $ff
+	unownwall "L", "I", "G", "H", "T"
+.UnownText_Water:
+	; db      $4c, $00, $46, $08, $42, $ff
+	unownwall "W", "A", "T", "E", "R"
+.UnownText_Ho_Oh:
+	; db      $0e, $2c, $64, $2c, $0e, $ff
+	unownwall "H", "O", "-", "O", "H"
 ; 8aed5
 
-MenuDataHeader_0x8aed5: ; 0x8aed5
+.MenuDataHeader_Escape: ; 0x8aed5
 	db $40 ; flags
 	db 04, 03 ; start coords
 	db 09, 16 ; end coords
 
-MenuDataHeader_0x8aeda: ; 0x8aeda
+.MenuDataHeader_Light: ; 0x8aeda
 	db $40 ; flags
 	db 04, 04 ; start coords
 	db 09, 15 ; end coords
 
-MenuDataHeader_0x8aedf: ; 0x8aedf
+.MenuDataHeader_Water: ; 0x8aedf
 	db $40 ; flags
 	db 04, 04 ; start coords
 	db 09, 15 ; end coords
 
-MenuDataHeader_0x8aee4: ; 0x8aee4
+.MenuDataHeader_Ho_Oh: ; 0x8aee4
 	db $40 ; flags
 	db 04, 04 ; start coords
 	db 09, 15 ; end coords
 ; 8aee9
 
-Function8aee9: ; 8aee9
-.asm_8aee9
+.FillAttr: ; 8aee9
 	ld a, [de]
 	cp $ff
 	ret z
 	cp $60
-	ld a, $d
-	jr c, .asm_8aef5
-	ld a, $5
+	ld a, (1 << 3) | PAL_BG_BROWN
+	jr c, .got_pal
+	ld a, PAL_BG_BROWN
 
-.asm_8aef5
-	call Function8aefd
-rept 2
+.got_pal
+	call .PlaceSquare
 	inc hl
-endr
+	inc hl
 	inc de
-	jr .asm_8aee9
+	jr .FillAttr
 ; 8aefd
 
-Function8aefd: ; 8aefd
+.PlaceSquare: ; 8aefd
 	push hl
 	ld [hli], a
 	ld [hld], a
-	ld b, $0
-	ld c, $14
+	ld b, 0
+	ld c, SCREEN_WIDTH
 	add hl, bc
 	ld [hli], a
 	ld [hl], a
@@ -217,42 +247,41 @@
 	ret
 ; 8af09
 
-Function8af09: ; 8af09
+.CopyWord: ; 8af09
 	push hl
 	push de
-.asm_8af0b
+.word_loop
 	ld a, [de]
 	cp $ff
-	jr z, .asm_8af19
+	jr z, .word_done
 	ld c, a
-	call Function8af1c
-rept 2
+	call .ConvertChar
 	inc hl
-endr
+	inc hl
 	inc de
-	jr .asm_8af0b
+	jr .word_loop
 
-.asm_8af19
+.word_done
 	pop de
 	pop hl
 	ret
 ; 8af1c
 
-Function8af1c: ; 8af1c
+.ConvertChar: ; 8af1c
 	push hl
 	ld a, c
 	cp $60
-	jr z, .asm_8af3b
+	jr z, .Tile60
 	cp $62
-	jr z, .asm_8af4b
+	jr z, .Tile62
 	cp $64
-	jr z, .asm_8af5b
+	jr z, .Tile64
 	ld [hli], a
 	inc a
 	ld [hld], a
 	dec a
-	ld b, $0
-	ld c, $14
+	ld b, 0
+	ld c, SCREEN_WIDTH
 	add hl, bc
 	ld c, $10
 	add c
@@ -262,11 +291,11 @@
 	pop hl
 	ret
 
-.asm_8af3b
+.Tile60:
 	ld [hl], $5b
 	inc hl
 	ld [hl], $5c
-	ld bc, $0013
+	ld bc, SCREEN_WIDTH - 1
 	add hl, bc
 	ld [hl], $4d
 	inc hl
@@ -274,11 +303,11 @@
 	pop hl
 	ret
 
-.asm_8af4b
+.Tile62:
 	ld [hl], $4e
 	inc hl
 	ld [hl], $4f
-	ld bc, $0013
+	ld bc, SCREEN_WIDTH - 1
 	add hl, bc
 	ld [hl], $5e
 	inc hl
@@ -286,11 +315,11 @@
 	pop hl
 	ret
 
-.asm_8af5b
+.Tile64:
 	ld [hl], $2
 	inc hl
 	ld [hl], $3
-	ld bc, $0013
+	ld bc, SCREEN_WIDTH - 1
 	add hl, bc
 	ld [hl], $3
 	inc hl
--- a/hram.asm
+++ b/hram.asm
@@ -1,5 +1,5 @@
 HRAM_START         EQU $ff80
-hPushOAM           EQU $ff80
+hPushOAM           EQU $ff80 ; 10 bytes
 
 hROMBankBackup     EQU $ff8a
 hBuffer            EQU $ff8b
--- a/macros/wram.asm
+++ b/macros/wram.asm
@@ -199,6 +199,21 @@
 \1End::
 endm
 
+roam_struct: MACRO
+\1Species::   db
+\1Level::     db
+\1MapGroup::  db
+\1MapNumber:: db
+\1HP::        ds 1
+\1DVs::       ds 2
+ENDM
+
+bugcontestwinner: macro
+\1PersonID:: ds 1
+\1Mon:: ds 1
+\1Score:: ds 2
+endm
+
 hall_of_fame: MACRO
 \1::
 \1WinCount:: ds 1
@@ -248,4 +263,113 @@
 \1Slot0d::       ds 1
 \1Slot0e::       ds 1
 \1Slot0f::       ds 1
-endm
\ No newline at end of file
+endm
+
+object_struct: MACRO
+\1Struct::
+\1Sprite:: ds 1
+\1MapObjectIndex:: ds 1
+\1SpriteTile:: ds 1
+\1MovementType:: ds 1
+\1Flags:: ds 2
+\1Palette:: ds 1
+\1Walking:: ds 1
+\1Direction:: ds 1
+\1StepType:: ds 1
+\1StepDuration:: ds 1
+\1Action:: ds 1
+\1ObjectStepFrame:: ds 1
+\1Facing:: ds 1
+\1StandingTile:: ds 1 ; collision
+\1LastTile:: ds 1     ; collision
+\1StandingMapX:: ds 1
+\1StandingMapY:: ds 1
+\1LastMapX:: ds 1
+\1LastMapY:: ds 1
+\1ObjectInitX:: ds 1
+\1ObjectInitY:: ds 1
+\1Radius:: ds 1
+\1SpriteX:: ds 1
+\1SpriteY:: ds 1
+\1SpriteXOffset:: ds 1
+\1SpriteYOffset:: ds 1
+\1MovementByteIndex:: ds 1
+\1Object28:: ds 1
+\1Object29:: ds 1
+\1Object30:: ds 1
+\1Object31:: ds 1
+\1Range:: ds 1
+	ds 7
+\1StructEnd::
+ENDM
+
+map_object: MACRO
+\1Object::
+\1ObjectStructID::  ds 1
+\1ObjectSprite::    ds 1
+\1ObjectYCoord::    ds 1
+\1ObjectXCoord::    ds 1
+\1ObjectMovement::  ds 1
+\1ObjectRadius::    ds 1
+\1ObjectHour::      ds 1
+\1ObjectTimeOfDay:: ds 1
+\1ObjectColor::     ds 1
+\1ObjectRange::     ds 1
+\1ObjectScript::    ds 2
+\1ObjectEventFlag:: ds 2
+	ds 2
+endm
+
+sprite_anim_struct: MACRO
+\1Index:: ds 1          ; 0
+\1FramesetID:: ds 1     ; 1
+\1AnimSeqID:: ds 1      ; 2
+\1TileID:: ds 1         ; 3
+\1XCoord:: ds 1         ; 4
+\1YCoord:: ds 1         ; 5
+\1XOffset:: ds 1        ; 6
+\1YOffset:: ds 1        ; 7
+\1Duration:: ds 1       ; 8
+\1DurationOffset:: ds 1 ; 9
+\1FrameIndex:: ds 1     ; a
+\1Sprite0b:: ds 1
+\1Sprite0c:: ds 1
+\1Sprite0d:: ds 1
+\1Sprite0e:: ds 1
+\1Sprite0f:: ds 1
+ENDM
+
+battle_anim_struct: MACRO
+; Placeholder until we can figure out what it all means
+\1_Index::  ds 1
+\1_Anim01:: ds 1
+\1_Anim02:: ds 1
+\1_FramesetIndex:: ds 1
+\1_FunctionIndex:: ds 1
+\1_Anim05:: ds 1
+\1_TileID:: ds 1
+\1_XCoord:: ds 1
+\1_YCoord:: ds 1
+\1_XOffset:: ds 1
+\1_YOffset:: ds 1
+\1_Anim0b:: ds 1
+\1_Anim0c:: ds 1
+\1_Anim0d:: ds 1
+\1_AnonJumptableIndex:: ds 1
+\1_Anim0f:: ds 1
+\1_Anim10:: ds 1
+\1_Anim11:: ds 1
+\1_Anim12:: ds 1
+\1_Anim13:: ds 1
+\1_Anim14:: ds 1
+\1_Anim15:: ds 1
+\1_Anim16:: ds 1
+\1_Anim17:: ds 1
+endm
+
+battle_bg_effect: MACRO
+\1_Function:: ds 1
+\1_01:: ds 1
+\1_02:: ds 1
+\1_03:: ds 1
+endm
--- a/main.asm
+++ b/main.asm
@@ -42,7 +42,7 @@
 PushOAM: ; 403f
 	ld a, Sprites / $100
 	ld [rDMA], a
-	ld a, 40
+	ld a, (SpritesEnd - Sprites) / 4 ; 40
 .loop
 	dec a
 	jr nz, .loop
--- a/maps/CopycatsHouse2F.asm
+++ b/maps/CopycatsHouse2F.asm
@@ -1,10 +1,10 @@
 const_value set 2
-	const COPYCATSHOUSE2F_COPYCAT1
+	const COPYCATSHOUSE2F_COPYCAT1 ; if player is male
 	const COPYCATSHOUSE2F_DODRIO
-	const COPYCATSHOUSE2F_FAIRYDOLL
+	const COPYCATSHOUSE2F_FAIRYDOLL ; lost item
 	const COPYCATSHOUSE2F_MONSTERDOLL
 	const COPYCATSHOUSE2F_BIRDDOLL
-	const COPYCATSHOUSE2F_COPYCAT2
+	const COPYCATSHOUSE2F_COPYCAT2 ; if player is female
 
 CopycatsHouse2F_MapScriptHeader:
 .MapTriggers:
@@ -15,15 +15,15 @@
 
 	; callbacks
 
-	dbw MAPCALLBACK_OBJECTS, CopycatsHouse2FCallback
+	dbw MAPCALLBACK_OBJECTS, .Callback
 
-CopycatsHouse2FCallback:
+.Callback:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part1
+	iftrue .Female
 	disappear COPYCATSHOUSE2F_COPYCAT2
 	appear COPYCATSHOUSE2F_COPYCAT1
 	jump .Done
-.Part1:
+.Female:
 	disappear COPYCATSHOUSE2F_COPYCAT1
 	appear COPYCATSHOUSE2F_COPYCAT2
 .Done:
@@ -32,146 +32,146 @@
 Copycat:
 	faceplayer
 	checkevent EVENT_GOT_PASS_FROM_COPYCAT
-	iftrue .Part15
+	iftrue .GotPass
 	checkevent EVENT_RETURNED_LOST_ITEM_TO_COPYCAT
-	iftrue .Part13
+	iftrue .TryGivePassAgain
 	checkitem LOST_ITEM
-	iftrue .Part12
+	iftrue .ReturnLostItem
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part1
-	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
+	iftrue .Default_Female_1
+	applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
-	jump .Part2
+	jump .Default_Merge_1
 
-.Part1:
-	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
+.Default_Female_1:
+	applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
-.Part2:
-	special RunCallback_04
+.Default_Merge_1:
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	checkevent EVENT_RETURNED_MACHINE_PART
-	iftrue .Part7
+	iftrue .TalkAboutLostItem
 	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part3
-	writetext UnknownText_0x18afda
-	jump .Part4
+	iftrue .Default_Female_2a
+	writetext CopycatText_Male_1
+	jump .Default_Merge_2a
 
-.Part3:
-	writetext UnknownText_0x18b316
-.Part4:
+.Default_Female_2a:
+	writetext CopycatText_Female_1
+.Default_Merge_2a:
 	waitbutton
 	closetext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part5
-	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
-	jump .Part6
+	iftrue .Default_Female_3a
+	applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData
+	jump .Default_Merge_3a
 
-.Part5:
-	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
-.Part6:
+.Default_Female_3a:
+	applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData
+.Default_Merge_3a:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
-	writetext UnknownText_0x18b028
+	writetext CopycatText_QuickMimicking
 	waitbutton
 	closetext
 	end
 
-.Part7:
+.TalkAboutLostItem:
 	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part8
-	writetext UnknownText_0x18b064
-	jump .Part9
+	iftrue .Default_Female_2b
+	writetext CopycatText_Male_2
+	jump .Default_Merge_2b
 
-.Part8:
-	writetext UnknownText_0x18b366
-.Part9:
+.Default_Female_2b:
+	writetext CopycatText_Female_2
+.Default_Merge_2b:
 	waitbutton
 	closetext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part10
-	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
-	jump .Part11
+	iftrue .Default_Female_3b
+	applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData
+	jump .Default_Merge_3b
 
-.Part10:
-	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
-.Part11:
+.Default_Female_3b:
+	applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData
+.Default_Merge_3b:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
-	writetext UnknownText_0x18b116
+	writetext CopycatText_Worried
 	waitbutton
 	closetext
 	setevent EVENT_MET_COPYCAT_FOUND_OUT_ABOUT_LOST_ITEM
 	end
 
-.Part12:
+.ReturnLostItem:
 	opentext
-	writetext UnknownText_0x18b17f
+	writetext CopycatText_GiveDoll
 	buttonsound
 	takeitem LOST_ITEM
 	setevent EVENT_RETURNED_LOST_ITEM_TO_COPYCAT
 	clearevent EVENT_COPYCATS_HOUSE_2F_DOLL
-	jump .Part14
+	jump .GivePass
 
-.Part13:
+.TryGivePassAgain:
 	opentext
-.Part14:
-	writetext UnknownText_0x18b1e2
+.GivePass:
+	writetext CopycatText_GivePass
 	buttonsound
 	verbosegiveitem PASS
-	iffalse .Part22
+	iffalse .Cancel
 	setevent EVENT_GOT_PASS_FROM_COPYCAT
-	writetext UnknownText_0x18b214
+	writetext CopycatText_ExplainPass
 	waitbutton
 	closetext
 	end
 
-.Part15:
+.GotPass:
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part16
-	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
+	iftrue .GotPass_Female_1
+	applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_CHRIS
-	jump .Part17
+	jump .GotPass_Merge_1
 
-.Part16:
-	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
+.GotPass_Female_1:
+	applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_KRIS
-.Part17:
-	special RunCallback_04
+.GotPass_Merge_1:
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part18
-	writetext UnknownText_0x18b298
-	jump .Part19
+	iftrue .GotPass_Female_2
+	writetext CopycatText_Male_3
+	jump .GotPass_Merge_2
 
-.Part18:
-	writetext UnknownText_0x18b415
-.Part19:
+.GotPass_Female_2:
+	writetext CopycatText_Female_3
+.GotPass_Merge_2:
 	waitbutton
 	closetext
 	checkflag ENGINE_PLAYER_IS_FEMALE
-	iftrue .Part20
-	applymovement COPYCATSHOUSE2F_COPYCAT1, MovementData_0x18afd0
-	jump .Part21
+	iftrue .GotPass_Female_3
+	applymovement COPYCATSHOUSE2F_COPYCAT1, CopycatSpinAroundMovementData
+	jump .GotPass_Merge_3
 
-.Part20:
-	applymovement COPYCATSHOUSE2F_COPYCAT2, MovementData_0x18afd0
-.Part21:
+.GotPass_Female_3:
+	applymovement COPYCATSHOUSE2F_COPYCAT2, CopycatSpinAroundMovementData
+.GotPass_Merge_3:
 	faceplayer
 	variablesprite SPRITE_COPYCAT, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
-	writetext UnknownText_0x18b2f5
+	writetext CopycatText_ItsAScream
 	waitbutton
-.Part22:
+.Cancel:
 	closetext
 	end
 
@@ -191,7 +191,7 @@
 CopycatsHouse2FBookshelf:
 	jumpstd picturebookshelf
 
-MovementData_0x18afd0:
+CopycatSpinAroundMovementData:
 	turn_head_down
 	turn_head_left
 	turn_head_up
@@ -203,7 +203,7 @@
 	turn_head_down
 	step_end
 
-UnknownText_0x18afda:
+CopycatText_Male_1:
 	text "<PLAYER>: Hi! Do"
 	line "you like #MON?"
 
@@ -214,7 +214,7 @@
 	line "You're strange!"
 	done
 
-UnknownText_0x18b028:
+CopycatText_QuickMimicking:
 	text "COPYCAT: Hmm?"
 	line "Quit mimicking?"
 
@@ -222,7 +222,7 @@
 	line "favorite hobby!"
 	done
 
-UnknownText_0x18b064:
+CopycatText_Male_2:
 	text "<PLAYER>: Hi!"
 	line "I heard that you"
 
@@ -241,7 +241,7 @@
 	cont "to VERMILION CITY?"
 	done
 
-UnknownText_0x18b116:
+CopycatText_Worried:
 	text "COPYCAT: Pardon?"
 
 	para "I shouldn't decide"
@@ -253,7 +253,7 @@
 	cont "someone finds it?"
 	done
 
-UnknownText_0x18b17f:
+CopycatText_GiveDoll:
 	text "COPYCAT: Yay!"
 	line "That's my CLEFAIRY"
 	cont "# DOLL!"
@@ -265,13 +265,13 @@
 	line "proof!"
 	done
 
-UnknownText_0x18b1e2:
+CopycatText_GivePass:
 	text "OK. Here's the"
 	line "MAGNET TRAIN PASS"
 	cont "like I promised!"
 	done
 
-UnknownText_0x18b214:
+CopycatText_ExplainPass:
 	text "COPYCAT: That's"
 	line "the PASS for the"
 	cont "MAGNET TRAIN."
@@ -284,7 +284,7 @@
 	cont "for the STATION."
 	done
 
-UnknownText_0x18b298:
+CopycatText_Male_3:
 	text "<PLAYER>: Hi!"
 	line "Thanks a lot for"
 	cont "the rail PASS!"
@@ -296,12 +296,12 @@
 	cont "my every move?"
 	done
 
-UnknownText_0x18b2f5:
+CopycatText_ItsAScream:
 	text "COPYCAT: You bet!"
 	line "It's a scream!"
 	done
 
-UnknownText_0x18b316:
+CopycatText_Female_1:
 	text "<PLAYER>: Hi. You"
 	line "must like #MON."
 
@@ -312,7 +312,7 @@
 	line "You're weird!"
 	done
 
-UnknownText_0x18b366:
+CopycatText_Female_2:
 	text "<PLAYER>: Hi. Did"
 	line "you really lose"
 	cont "your # DOLL?"
@@ -331,7 +331,7 @@
 	cont "in VERMILION?"
 	done
 
-UnknownText_0x18b415:
+CopycatText_Female_3:
 	text "<PLAYER>: Thank you"
 	line "for the rail PASS!"
 
--- a/maps/FuchsiaGym.asm
+++ b/maps/FuchsiaGym.asm
@@ -35,7 +35,7 @@
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
 	writetext UnknownText_0x195feb
 	playsound SFX_GET_BADGE
@@ -65,7 +65,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_1, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_1, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 UnknownScript_0x195e2c:
 	faceplayer
 	opentext
@@ -99,7 +99,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_2, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_2, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 UnknownScript_0x195e66:
 	faceplayer
 	opentext
@@ -133,7 +133,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_3, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_3, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 UnknownScript_0x195ea0:
 	faceplayer
 	opentext
@@ -167,7 +167,7 @@
 	applymovement FUCHSIAGYM_FUCHSIA_GYM_4, MovementData_0x195f27
 	faceplayer
 	variablesprite SPRITE_FUCHSIA_GYM_4, SPRITE_YOUNGSTER
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 UnknownScript_0x195eda:
 	faceplayer
 	opentext
--- a/maps/FuchsiaPokeCenter1F.asm
+++ b/maps/FuchsiaPokeCenter1F.asm
@@ -35,7 +35,7 @@
 	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_JANINE
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	opentext
 	writetext UnknownText_0x19654e
 	waitbutton
@@ -43,7 +43,7 @@
 	applymovement FUCHSIAPOKECENTER1F_JANINE_IMPERSONATOR, MovementData_0x196486
 	faceplayer
 	variablesprite SPRITE_JANINE_IMPERSONATOR, SPRITE_LASS
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	end
 
 MovementData_0x196486:
--- a/maps/OlivineCity.asm
+++ b/maps/OlivineCity.asm
@@ -49,7 +49,7 @@
 	disappear OLIVINECITY_OLIVINE_RIVAL
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	end
 
 UnknownScript_0x1a886b:
@@ -73,7 +73,7 @@
 	dotrigger $1
 	special RestartMapMusic
 	variablesprite SPRITE_OLIVINE_RIVAL, SPRITE_SWIMMER_GUY
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	end
 
 SailorScript_0x1a88a3:
--- a/maps/Route36.asm
+++ b/maps/Route36.asm
@@ -99,7 +99,7 @@
 	applymovement ROUTE36_WEIRD_TREE, WeirdTreeMovement_Flee
 	disappear ROUTE36_WEIRD_TREE
 	variablesprite SPRITE_WEIRD_TREE, SPRITE_TWIN
-	special RunCallback_04
+	special MapCallbackSprites_LoadUsedSpritesGFX
 	special RefreshSprites
 	end
 
--- a/wram.asm
+++ b/wram.asm
@@ -242,26 +242,6 @@
 wc312:: ds 1
 wc313:: ds 1
 wSpriteAnimationStructs::
-
-sprite_anim_struct: MACRO
-\1Index:: ds 1          ; 0
-\1FramesetID:: ds 1     ; 1
-\1AnimSeqID:: ds 1      ; 2
-\1TileID:: ds 1         ; 3
-\1XCoord:: ds 1         ; 4
-\1YCoord:: ds 1         ; 5
-\1XOffset:: ds 1        ; 6
-\1YOffset:: ds 1        ; 7
-\1Duration:: ds 1       ; 8
-\1DurationOffset:: ds 1 ; 9
-\1FrameIndex:: ds 1     ; a
-\1Sprite0b:: ds 1
-\1Sprite0c:: ds 1
-\1Sprite0d:: ds 1
-\1Sprite0e:: ds 1
-\1Sprite0f:: ds 1
-ENDM
-
 ; Field  0: Index
 ; Fields 1-3: Loaded from SpriteAnimSeqData
 wc314::
@@ -1531,11 +1511,6 @@
 wMonOrItemNameBuffer::
 	ds wBufferMonNick - @
 
-bugcontestwinner: macro
-\1PersonID:: ds 1
-\1Mon:: ds 1
-\1Score:: ds 2
-endm
 wBugContestResults::
 	bugcontestwinner wBugContestFirstPlace
 	bugcontestwinner wBugContestSecondPlace
@@ -2351,44 +2326,6 @@
 wFollowMovementQueue:: ds 5
 
 ObjectStructs:: ; d4d6
-object_struct: MACRO
-\1Struct::
-\1Sprite:: ds 1
-\1MapObjectIndex:: ds 1
-\1SpriteTile:: ds 1
-\1MovementType:: ds 1
-\1Flags:: ds 2
-\1Palette:: ds 1
-\1Walking:: ds 1
-\1Direction:: ds 1
-\1StepType:: ds 1
-\1StepDuration:: ds 1
-\1Action:: ds 1
-\1ObjectStepFrame:: ds 1
-\1Facing:: ds 1
-\1StandingTile:: ds 1 ; collision
-\1LastTile:: ds 1     ; collision
-\1StandingMapX:: ds 1
-\1StandingMapY:: ds 1
-\1LastMapX:: ds 1
-\1LastMapY:: ds 1
-\1ObjectInitX:: ds 1
-\1ObjectInitY:: ds 1
-\1Radius:: ds 1
-\1SpriteX:: ds 1
-\1SpriteY:: ds 1
-\1SpriteXOffset:: ds 1
-\1SpriteYOffset:: ds 1
-\1MovementByteIndex:: ds 1
-\1Object28:: ds 1
-\1Object29:: ds 1
-\1Object30:: ds 1
-\1Object31:: ds 1
-\1Range:: ds 1
-	ds 7
-\1StructEnd::
-ENDM
-
 	object_struct Player
 	object_struct Object1
 	object_struct Object2
@@ -2408,23 +2345,6 @@
 	ds $28
 
 MapObjects:: ; d71e
-map_object: MACRO
-\1Object::
-\1ObjectStructID::  ds 1
-\1ObjectSprite::    ds 1
-\1ObjectYCoord::    ds 1
-\1ObjectXCoord::    ds 1
-\1ObjectMovement::  ds 1
-\1ObjectRadius::    ds 1
-\1ObjectHour::      ds 1
-\1ObjectTimeOfDay:: ds 1
-\1ObjectColor::     ds 1
-\1ObjectRange::     ds 1
-\1ObjectScript::    ds 2
-\1ObjectEventFlag:: ds 2
-	ds 2
-endm
-
 	map_object Player
 	map_object Map1
 	map_object Map2
@@ -2921,15 +2841,6 @@
 wDunsparceMapNumber:: ds 1
 wFishingSwarmFlag:: ds 1
 
-roam_struct: MACRO
-\1Species::   db
-\1Level::     db
-\1MapGroup::  db
-\1MapNumber:: db
-\1HP::        ds 1
-\1DVs::       ds 2
-ENDM
-
 wRoamMon1:: roam_struct wRoamMon1 ; dfcf
 wRoamMon2:: roam_struct wRoamMon2 ; dfd6
 wRoamMon3:: roam_struct wRoamMon3 ; dfdd
@@ -3064,34 +2975,6 @@
 
 wBattleAnimTileDict:: ds 10
 
-battle_anim_struct: MACRO
-; Placeholder until we can figure out what it all means
-\1_Index::  ds 1
-\1_Anim01:: ds 1
-\1_Anim02:: ds 1
-\1_FramesetIndex:: ds 1
-\1_FunctionIndex:: ds 1
-\1_Anim05:: ds 1
-\1_TileID:: ds 1
-\1_XCoord:: ds 1
-\1_YCoord:: ds 1
-\1_XOffset:: ds 1
-\1_YOffset:: ds 1
-\1_Anim0b:: ds 1
-\1_Anim0c:: ds 1
-\1_Anim0d:: ds 1
-\1_AnonJumptableIndex:: ds 1
-\1_Anim0f:: ds 1
-\1_Anim10:: ds 1
-\1_Anim11:: ds 1
-\1_Anim12:: ds 1
-\1_Anim13:: ds 1
-\1_Anim14:: ds 1
-\1_Anim15:: ds 1
-\1_Anim16:: ds 1
-\1_Anim17:: ds 1
-endm
-
 ActiveAnimObjects:: ; d30a
 AnimObject01:: battle_anim_struct AnimObject01
 AnimObject02:: battle_anim_struct AnimObject02
@@ -3104,13 +2987,6 @@
 AnimObject09:: battle_anim_struct AnimObject09
 AnimObject10:: battle_anim_struct AnimObject10
 ActiveAnimObjectsEnd:: ; d3aa
-
-battle_bg_effect: MACRO
-\1_Function:: ds 1
-\1_01:: ds 1
-\1_02:: ds 1
-\1_03:: ds 1
-endm
 
 ActiveBGEffects:: ; d3fa
 BGEffect1:: battle_bg_effect BGEffect1