shithub: pokecrystal

Download patch

ref: 6a3b3e3773744c72e4453c8852fb501fe2d820db
parent: af0119ca7e73c21205b5bb89bb9361db9aafa15f
author: pikalaxalt <[email protected]>
date: Wed May 11 17:19:52 EDT 2016

Save functions; feeble attempt at serial and link functions

--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -2020,7 +2020,7 @@
 .dw_return ; e322a
 	pop af
 	ld e, a
-	callba Function14ad5
+	callba MovePkmnWOMail_InsertMon_SaveGame
 	ret
 ; e3233
 
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1942,20 +1942,20 @@
 	pop af
 	ld c, a
 	cp MEW
-	jr z, .asm_28e49
+	jr z, .loop
 	ld a, [CurPartySpecies]
 	cp MEW
-	jr z, .asm_28e49
+	jr z, .loop
 	ld b, $2
 	ld a, c
 	cp CELEBI
-	jr z, .asm_28e49
+	jr z, .loop
 	ld a, [CurPartySpecies]
 	cp CELEBI
-	jr z, .asm_28e49
+	jr z, .loop
 	ld b, $0
 
-.asm_28e49
+.loop
 	ld a, b
 	ld [wPlayerLinkAction], a
 	push bc
@@ -1963,16 +1963,16 @@
 	pop bc
 	ld a, [wLinkMode]
 	cp LINK_TIMECAPSULE
-	jr z, .asm_28e63
+	jr z, .save
 	ld a, b
 	and a
-	jr z, .asm_28e63
+	jr z, .save
 	ld a, [wOtherPlayerLinkAction]
 	cp b
-	jr nz, .asm_28e49
+	jr nz, .loop
 
-.asm_28e63
-	callba Function14a58
+.save
+	callba SaveAfterLinkTrade
 	callba MobileFn_1060af
 	callba BackupMobileEventIndex
 	ld c, 40
@@ -2255,7 +2255,7 @@
 
 .asm_29d2f
 	ld a, $2
-	ld [wcf5c], a
+	ld [wcf5b + 1], a
 	ld a, $ff
 	ld [wcf5b], a
 .asm_29d39
@@ -2278,9 +2278,9 @@
 	dec a
 	ld [wcf5b], a
 	jr nz, .asm_29d68
-	ld a, [wcf5c]
+	ld a, [wcf5b + 1]
 	dec a
-	ld [wcf5c], a
+	ld [wcf5b + 1], a
 	jr z, .asm_29d8d
 
 .asm_29d68
@@ -2384,24 +2384,24 @@
 	ld [hFFCA], a
 	ld a, [wcf5b]
 	ld h, a
-	ld a, [wcf5c]
+	ld a, [wcf5b + 1]
 	ld l, a
 	push hl
-	call Function29e3b
+	call .CheckConnected
 	pop hl
-	jr nz, .asm_29e2f
-	call Function29e47
-	call Function29e53
-	call Function29e3b
-	jr nz, .asm_29e2f
-	call Function29e47
+	jr nz, .load_true
+	call .AcknowledgeSerial
+	call .ConvertDW
+	call .CheckConnected
+	jr nz, .load_true
+	call .AcknowledgeSerial
 	xor a
-	jr .asm_29e31
+	jr .load_scriptvar
 
-.asm_29e2f
+.load_true
 	ld a, $1
 
-.asm_29e31
+.load_scriptvar
 	ld [ScriptVar], a
 	ld hl, wcf5b
 	xor a
@@ -2410,7 +2410,7 @@
 	ret
 ; 29e3b
 
-Function29e3b: ; 29e3b
+.CheckConnected: ; 29e3b
 	call Function87d
 	ld hl, wcf5b
 	ld a, [hli]
@@ -2421,17 +2421,19 @@
 	ret
 ; 29e47
 
-Function29e47: ; 29e47
-	ld b, $a
-.asm_29e49
+.AcknowledgeSerial: ; 29e47
+	ld b, 10
+.loop
 	call DelayFrame
 	call LinkDataReceived
 	dec b
-	jr nz, .asm_29e49
+	jr nz, .loop
 	ret
 ; 29e53
 
-Function29e53: ; 29e53
+.ConvertDW: ; 29e53
+	; hl = ((hl - $100) / 4) + $100
+	;    = (hl / 4) + $c0
 	dec h
 	srl h
 	rr l
@@ -2441,7 +2443,7 @@
 	ld a, h
 	ld [wcf5b], a
 	ld a, l
-	ld [wcf5c], a
+	ld [wcf5b + 1], a
 	ret
 ; 29e66
 
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -4,7 +4,7 @@
 	call SpeechTextBox
 	call UpdateSprites
 	callba SaveMenu_LoadEDTile
-	ld hl, UnknownText_0x15283
+	ld hl, Text_WouldYouLikeToSaveTheGame
 	call SaveTheGame_yesorno
 	jr nz, .refused
 	call AskOverwriteSaveFile
@@ -23,7 +23,7 @@
 	scf
 	ret
 
-Function14a58: ; 14a58
+SaveAfterLinkTrade: ; 14a58
 	call PauseGameLogic
 	callba StageRTCTimeForSave
 	callba BackupMysteryGift
@@ -40,7 +40,7 @@
 
 ChangeBoxSaveGame: ; 14a83 (5:4a83)
 	push de
-	ld hl, UnknownText_0x152a1
+	ld hl, Text_SaveOnBoxSwitch
 	call MenuTextBox
 	call YesNoBox
 	call ExitMenu
@@ -86,7 +86,7 @@
 	ret
 ; 14ad5
 
-Function14ad5: ; 14ad5
+MovePkmnWOMail_InsertMon_SaveGame: ; 14ad5
 	call PauseGameLogic
 	push de
 	call SaveBox
@@ -120,7 +120,7 @@
 ; 14b34
 
 StartMovePkmnWOMail_SaveGame: ; 14b34
-	ld hl, UnknownText_0x152a6
+	ld hl, Text_SaveOnMovePkmnWOMail
 	call MenuTextBox
 	call YesNoBox
 	call ExitMenu
@@ -184,13 +184,13 @@
 	jr z, .erase
 	call CompareLoadedAndSavedPlayerID
 	jr z, .yoursavefile
-	ld hl, UnknownText_0x15297
+	ld hl, Text_AnotherSaveFile
 	call SaveTheGame_yesorno
 	jr nz, .refused
 	jr .erase
 
 .yoursavefile
-	ld hl, UnknownText_0x15292
+	ld hl, Text_AlreadyASaveFile
 	call SaveTheGame_yesorno
 	jr nz, .refused
 	jr .ok
@@ -208,7 +208,7 @@
 ; 14baf
 
 SaveTheGame_yesorno: ; 14baf
-	ld b, BANK(UnknownText_0x15283)
+	ld b, BANK(Text_WouldYouLikeToSaveTheGame)
 	call MapTextbox
 	call LoadMenuTextBox
 	lb bc, 0, 7
@@ -253,7 +253,7 @@
 	ld a, 3
 	ld [Options], a
 	; <PLAYER> saved the game!
-	ld hl, UnknownText_0x1528d
+	ld hl, Text_PlayerSavedTheGame
 	call PrintText
 	; restore the original text speed setting
 	pop af
@@ -355,7 +355,7 @@
 	ld a, $3
 	ld [Options], a
 	; SAVING... DON'T TURN OFF THE POWER.
-	ld hl, UnknownText_0x15288
+	ld hl, Text_SavingDontTurnOffThePower
 	call PrintText
 	; Restore the text speed setting
 	pop af
@@ -416,17 +416,18 @@
 ; 14d18
 
 Function14d18: ; 14d18
-; copy Unknown_14d2c to SRA4:a007
+; XXX
+; copy .Data to SRA4:a007
 	ld a, $4
 	call GetSRAMBank
-	ld hl, Unknown_14d2c
+	ld hl, .Data
 	ld de, $a007
-	ld bc, 48
+	ld bc, .DataEnd - .Data
 	call CopyBytes
 	jp CloseSRAM
 ; 14d2c
 
-Unknown_14d2c: ; 14d2c
+.Data: ; 14d2c
 	db $0d, $02, $00, $05, $00, $00
 	db $22, $02, $01, $05, $00, $00
 	db $03, $04, $05, $08, $03, $05
@@ -436,6 +437,7 @@
 	db $0f, $05, $14, $07, $05, $05
 	db $11, $0c, $0c, $06, $06, $04
 ; 14d5c
+.DataEnd
 
 EraseBattleTowerStatus: ; 14d5c
 	ld a, BANK(sBattleTowerChallengeState)
@@ -451,6 +453,7 @@
 ; 14d6c
 
 Function14d6c: ; 14d6c
+; XXX
 	ld a, $4
 	call GetSRAMBank
 	ld a, [$a60b]
@@ -467,6 +470,7 @@
 ; 14d83
 
 Function14d83: ; 14d83
+; XXX
 	ld a, $4
 	call GetSRAMBank
 	xor a
@@ -477,6 +481,7 @@
 ; 14d93
 
 Function14d93: ; 14d93
+; XXX
 	ld a, $7
 	call GetSRAMBank
 	xor a
@@ -664,7 +669,7 @@
 	push af
 	set NO_TEXT_SCROLL, a
 	ld [Options], a
-	ld hl, UnknownText_0x1529c
+	ld hl, Text_SaveFileCorrupted
 	call PrintText
 	pop af
 	ld [Options], a
@@ -1156,49 +1161,49 @@
 ; 15283
 
 
-UnknownText_0x15283: ; 0x15283
+Text_WouldYouLikeToSaveTheGame: ; 0x15283
 	; Would you like to save the game?
 	text_jump UnknownText_0x1c454b
 	db "@"
 ; 0x15288
 
-UnknownText_0x15288: ; 0x15288
+Text_SavingDontTurnOffThePower: ; 0x15288
 	; SAVING… DON'T TURN OFF THE POWER.
 	text_jump UnknownText_0x1c456d
 	db "@"
 ; 0x1528d
 
-UnknownText_0x1528d: ; 0x1528d
+Text_PlayerSavedTheGame: ; 0x1528d
 	; saved the game.
 	text_jump UnknownText_0x1c4590
 	db "@"
 ; 0x15292
 
-UnknownText_0x15292: ; 0x15292
+Text_AlreadyASaveFile: ; 0x15292
 	; There is already a save file. Is it OK to overwrite?
 	text_jump UnknownText_0x1c45a3
 	db "@"
 ; 0x15297
 
-UnknownText_0x15297: ; 0x15297
+Text_AnotherSaveFile: ; 0x15297
 	; There is another save file. Is it OK to overwrite?
 	text_jump UnknownText_0x1c45d9
 	db "@"
 ; 0x1529c
 
-UnknownText_0x1529c: ; 0x1529c
+Text_SaveFileCorrupted: ; 0x1529c
 	; The save file is corrupted!
 	text_jump UnknownText_0x1c460d
 	db "@"
 ; 0x152a1
 
-UnknownText_0x152a1: ; 0x152a1
+Text_SaveOnBoxSwitch: ; 0x152a1
 	; When you change a #MON BOX, data will be saved. OK?
 	text_jump UnknownText_0x1c462a
 	db "@"
 ; 0x152a6
 
-UnknownText_0x152a6: ; 0x152a6
+Text_SaveOnMovePkmnWOMail: ; 0x152a6
 	; Each time you move a #MON, data will be saved. OK?
 	text_jump UnknownText_0x1c465f
 	db "@"
--- a/home/serial.asm
+++ b/home/serial.asm
@@ -78,7 +78,7 @@
 .player2
 	ld a, $1
 	ld [hFFCA], a
-	ld a, -2
+	ld a, $fe
 	ld [hSerialSend], a
 
 .end
@@ -126,92 +126,93 @@
 ; 78a
 
 Function78a:: ; 78a
+.loop
 	xor a
 	ld [hFFCA], a
 	ld a, [hLinkPlayerNumber]
 	cp $2
-	jr nz, .asm_79b
+	jr nz, .not_player_2
 	ld a, $1
 	ld [rSC], a
 	ld a, $81
 	ld [rSC], a
-
-.asm_79b
+.not_player_2
+.loop2
 	ld a, [hFFCA]
 	and a
-	jr nz, .asm_7e5
+	jr nz, .reset_ffca
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr nz, .asm_7c0
-	call Function82b
-	jr z, .asm_7c0
-	call .asm_825
+	jr nz, .not_player_1_or_wcf5b_zero
+	call Checkwcf5bNonzero
+	jr z, .not_player_1_or_wcf5b_zero
+	call .delay_15_cycles
 	push hl
-	ld hl, wcf5c
+	ld hl, wcf5b + 1
 	inc [hl]
-	jr nz, .asm_7b7
+	jr nz, .no_rollover_up
 	dec hl
 	inc [hl]
 
-.asm_7b7
+.no_rollover_up
 	pop hl
-	call Function82b
-	jr nz, .asm_79b
-	jp Function833
+	call Checkwcf5bNonzero
+	jr nz, .loop2
+	jp SerialDisconnected
 
-.asm_7c0
+.not_player_1_or_wcf5b_zero
 	ld a, [rIE]
 	and $f
 	cp $8
-	jr nz, .asm_79b
+	jr nz, .loop2
 	ld a, [wcf5d]
 	dec a
 	ld [wcf5d], a
-	jr nz, .asm_79b
+	jr nz, .loop2
 	ld a, [wcf5d + 1]
 	dec a
 	ld [wcf5d + 1], a
-	jr nz, .asm_79b
+	jr nz, .loop2
 	ld a, [hLinkPlayerNumber]
 	cp $1
-	jr z, .asm_7e5
-	ld a, $ff
-.asm_7e2
+	jr z, .reset_ffca
+	ld a, 255
+.delay_255_cycles
 	dec a
-	jr nz, .asm_7e2
+	jr nz, .delay_255_cycles
 
-.asm_7e5
+.reset_ffca
 	xor a
 	ld [hFFCA], a
 	ld a, [rIE]
 	and $f
 	sub $8
-	jr nz, .asm_7f8
+	jr nz, .rIE_not_equal_8
 	ld [wcf5d], a
 	ld a, $50
 	ld [wcf5d + 1], a
 
-.asm_7f8
+.rIE_not_equal_8
 	ld a, [hSerialReceive]
 	cp $fe
 	ret nz
-	call Function82b
-	jr z, .asm_813
+	call Checkwcf5bNonzero
+	jr z, .wcf5b_zero
 	push hl
-	ld hl, wcf5c
+	ld hl, wcf5b + 1
 	ld a, [hl]
 	dec a
 	ld [hld], a
 	inc a
-	jr nz, .asm_80d
+	jr nz, .no_rollover
 	dec [hl]
 
-.asm_80d
+.no_rollover
 	pop hl
-	call Function82b
-	jr z, Function833
+	call Checkwcf5bNonzero
+	jr z, SerialDisconnected
 
-.asm_813
+.wcf5b_zero
 	ld a, [rIE]
 	and $f
 	cp $8
@@ -220,17 +221,17 @@
 	ld a, [hl]
 	ld [hSerialSend], a
 	call DelayFrame
-	jp Function78a
+	jp .loop
 
-.asm_825
-	ld a, $f
-.asm_827
+.delay_15_cycles
+	ld a, 15
+.delay_cycles
 	dec a
-	jr nz, .asm_827
+	jr nz, .delay_cycles
 	ret
 ; 82b
 
-Function82b:: ; 82b
+Checkwcf5bNonzero:: ; 82b
 	push hl
 	ld hl, wcf5b
 	ld a, [hli]
@@ -239,10 +240,10 @@
 	ret
 ; 833
 
-Function833:: ; 833
+SerialDisconnected:: ; 833
 	dec a
 	ld [wcf5b], a
-	ld [wcf5c], a
+	ld [wcf5b + 1], a
 	ret
 ; 83b
 
@@ -294,18 +295,19 @@
 .loop
 	call LinkTransfer
 	call DelayFrame
-	call Function82b
+	call Checkwcf5bNonzero
 	jr z, .check
 	push hl
-	ld hl, wcf5c
+	ld hl, wcf5b + 1
 	dec [hl]
 	jr nz, .skip
 	dec hl
 	dec [hl]
 	jr nz, .skip
+	; We might be disconnected
 	pop hl
 	xor a
-	jp Function833
+	jp SerialDisconnected
 
 .skip
 	pop hl
@@ -395,6 +397,7 @@
 ; 919
 
 Function919:: ; 919
+; XXX
 	ld a, [wLinkMode]
 	and a
 	ret nz
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -5451,7 +5451,7 @@
 Function102423: ; 102423
 	call Function102921
 	ret nc
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	callba MobileFn_1060af
 	callba BackupMobileEventIndex
 	ld hl, wcd4b
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -7331,7 +7331,7 @@
 	ld [wPokemonWithdrawDepositParameter], a
 	callba RemoveMonFromPartyOrBox
 	callba Function170807
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	jp Function11ad8a
 ; 11b5e0
 
@@ -7616,7 +7616,7 @@
 	callba EvolvePokemon
 	xor a
 	ld [wLinkMode], a
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	ld a, $5
 	call GetSRAMBank
 	ld a, $5
@@ -7781,7 +7781,7 @@
 	ld a, $c64b / $100
 	ld [wMobileMonMailPointerBuffer + 1], a
 	call AddMobileMonToParty
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	ret
 ; 11b98f
 
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -308,7 +308,7 @@
 	callba EvolvePokemon
 	xor a
 	ld [wLinkMode], a
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	ld a, $5
 	call GetSRAMBank
 	ld a, $5
@@ -3059,7 +3059,7 @@
 	push af
 	ld a, $1
 	ld [rSVBK], a
-	callba Function14a58
+	callba SaveAfterLinkTrade
 	pop af
 	ld [rSVBK], a
 	ret
--- a/wram.asm
+++ b/wram.asm
@@ -1268,8 +1268,7 @@
 wOtherPlayerLinkAction:: ds 4
 wPlayerLinkAction:: ds 1
 wcf57:: ds 4
-wcf5b:: ds 1
-wcf5c:: ds 1
+wcf5b:: dw
 wcf5d:: ds 2
 
 MonType:: ; cf5f