mirror of
https://github.com/pret/pokefirered.git
synced 2026-05-06 05:35:23 -05:00
Merge branch 'master' into pokemon
This commit is contained in:
commit
c7d3ad06b0
0
.travis/calcrom/webhook.sh
Normal file → Executable file
0
.travis/calcrom/webhook.sh
Normal file → Executable file
1398
asm/battle_records.s
1398
asm/battle_records.s
File diff suppressed because it is too large
Load Diff
|
|
@ -2407,7 +2407,7 @@ _080E6C00:
|
|||
adds r0, r2
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x20
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
b _080E6C80
|
||||
.align 2, 0
|
||||
_080E6C10: .4byte 0x0000057a
|
||||
|
|
@ -2599,7 +2599,7 @@ _080E6D9C:
|
|||
adds r0, r1
|
||||
ldrh r1, [r0]
|
||||
movs r0, 0x20
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
b _080E6E08
|
||||
.align 2, 0
|
||||
_080E6DAC: .4byte 0x0000057a
|
||||
|
|
@ -2717,7 +2717,7 @@ _080E6E76:
|
|||
adds r5, r0, 0
|
||||
movs r0, 0x20
|
||||
adds r1, r5, 0
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
ldr r1, _080E6EA4 @ =0x0000270f
|
||||
cmp r5, r1
|
||||
bhi _080E6EB8
|
||||
|
|
@ -2731,7 +2731,7 @@ _080E6EA8:
|
|||
ldrh r5, [r1]
|
||||
movs r0, 0x20
|
||||
adds r1, r5, 0
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
ldr r1, _080E6EC4 @ =0x0000270f
|
||||
cmp r5, r1
|
||||
bls _080E6ECC
|
||||
|
|
|
|||
|
|
@ -943,7 +943,7 @@ _08080E9A:
|
|||
lsls r1, r5, 8
|
||||
ldr r0, _08080ED4 @ =gBlockRecvBuffer
|
||||
adds r1, r0
|
||||
ldr r0, _08080ED8 @ =gUnknown_2039624
|
||||
ldr r0, _08080ED8 @ =gTrainerCards
|
||||
lsls r4, r5, 1
|
||||
adds r4, r5
|
||||
lsls r4, 5
|
||||
|
|
@ -958,12 +958,12 @@ _08080E9A:
|
|||
.align 2, 0
|
||||
_08080ED0: .4byte gLinkPlayers
|
||||
_08080ED4: .4byte gBlockRecvBuffer
|
||||
_08080ED8: .4byte gUnknown_2039624
|
||||
_08080ED8: .4byte gTrainerCards
|
||||
_08080EDC:
|
||||
lsls r1, r5, 8
|
||||
ldr r0, _08080F3C @ =gBlockRecvBuffer
|
||||
adds r1, r0
|
||||
ldr r2, _08080F40 @ =gUnknown_2039624
|
||||
ldr r2, _08080F40 @ =gTrainerCards
|
||||
lsls r0, r5, 1
|
||||
adds r0, r5
|
||||
lsls r0, 5
|
||||
|
|
@ -1004,7 +1004,7 @@ _08080EF8:
|
|||
b _08080F66
|
||||
.align 2, 0
|
||||
_08080F3C: .4byte gBlockRecvBuffer
|
||||
_08080F40: .4byte gUnknown_2039624
|
||||
_08080F40: .4byte gTrainerCards
|
||||
_08080F44: .4byte gSpecialVar_Result
|
||||
_08080F48: .4byte gLinkType
|
||||
_08080F4C: .4byte 0x00004411
|
||||
|
|
@ -1935,7 +1935,7 @@ sub_8081668: @ 8081668
|
|||
ldrb r0, [r0]
|
||||
movs r5, 0x1
|
||||
eors r0, r5
|
||||
bl sub_80CD98C
|
||||
bl TryRecordLinkBattleOutcome
|
||||
ldr r0, _080816C0 @ =gWirelessCommType
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0
|
||||
|
|
|
|||
15
asm/ghost.s
15
asm/ghost.s
|
|
@ -2349,7 +2349,7 @@ _080B64A4:
|
|||
asrs r0, 16
|
||||
bl __floatsidf
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B6590 @ =0x00000000
|
||||
ldr r3, _080B658C+4 @ =0x00000000
|
||||
bl __muldf3
|
||||
adds r5, r1, 0
|
||||
adds r4, r0, 0
|
||||
|
|
@ -2375,7 +2375,7 @@ _080B64A4:
|
|||
asrs r0, 16
|
||||
bl __floatsidf
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B6590 @ =0x00000000
|
||||
ldr r3, _080B658C+4 @ =0x00000000
|
||||
bl __muldf3
|
||||
ldr r2, [sp, 0x18]
|
||||
ldr r3, [sp, 0x1C]
|
||||
|
|
@ -2398,8 +2398,8 @@ _080B64A4:
|
|||
lsls r0, r2, 16
|
||||
asrs r0, 16
|
||||
bl __floatsidf
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B6590 @ =0x00000000
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B658C+4 @ =0x00000000
|
||||
bl __muldf3
|
||||
ldr r2, [sp, 0x18]
|
||||
ldr r3, [sp, 0x1C]
|
||||
|
|
@ -2416,8 +2416,8 @@ _080B64A4:
|
|||
lsls r0, r1, 16
|
||||
asrs r0, 16
|
||||
bl __floatsidf
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B6590 @ =0x00000000
|
||||
ldr r2, _080B658C @ =0x3fb00000
|
||||
ldr r3, _080B658C+4 @ =0x00000000
|
||||
bl __muldf3
|
||||
ldr r2, [sp, 0x18]
|
||||
ldr r3, [sp, 0x1C]
|
||||
|
|
@ -2433,8 +2433,7 @@ _080B64A4:
|
|||
b _080B65C2
|
||||
.align 2, 0
|
||||
_080B6588: .4byte gTasks
|
||||
_080B658C: .4byte 0x3fb00000
|
||||
_080B6590: .4byte 0x00000000
|
||||
_080B658C: .double 0.0625
|
||||
_080B6594:
|
||||
movs r2, 0
|
||||
mov r9, r2
|
||||
|
|
|
|||
|
|
@ -3154,14 +3154,14 @@ _081172C0:
|
|||
cmp r4, r0
|
||||
bne _0811734A
|
||||
movs r4, 0
|
||||
ldr r0, _081172E0 @ =gUnknown_2039624
|
||||
ldr r0, _081172E0 @ =gTrainerCards
|
||||
adds r7, r0, 0
|
||||
adds r7, 0x38
|
||||
ldr r6, _081172E4 @ =gLinkPlayers
|
||||
adds r5, r0, 0
|
||||
b _08117302
|
||||
.align 2, 0
|
||||
_081172E0: .4byte gUnknown_2039624
|
||||
_081172E0: .4byte gTrainerCards
|
||||
_081172E4: .4byte gLinkPlayers
|
||||
_081172E8:
|
||||
lsls r0, r4, 8
|
||||
|
|
@ -10949,7 +10949,7 @@ sub_811B31C: @ 811B31C
|
|||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 5
|
||||
ldr r0, _0811B4B0 @ =gUnknown_2039624
|
||||
ldr r0, _0811B4B0 @ =gTrainerCards
|
||||
adds r1, r0
|
||||
mov r8, r1
|
||||
bl DynamicPlaceholderTextUtil_Reset
|
||||
|
|
@ -11108,7 +11108,7 @@ _0811B45E:
|
|||
bl StringAppend
|
||||
b _0811B4F0
|
||||
.align 2, 0
|
||||
_0811B4B0: .4byte gUnknown_2039624
|
||||
_0811B4B0: .4byte gTrainerCards
|
||||
_0811B4B4: .4byte gTrainerClassNames
|
||||
_0811B4B8: .4byte gUnknown_84594B0
|
||||
_0811B4BC: .4byte gUnknown_84594C4
|
||||
|
|
|
|||
|
|
@ -334,7 +334,7 @@ _08054EB0:
|
|||
ldr r1, _08054EC0 @ =0x00ffffff
|
||||
_08054EB2:
|
||||
adds r0, r4, 0
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
_08054EB8:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
|
|
@ -376,8 +376,8 @@ _08054EFA:
|
|||
bx r1
|
||||
thumb_func_end GetGameStat
|
||||
|
||||
thumb_func_start sub_8054F00
|
||||
sub_8054F00: @ 8054F00
|
||||
thumb_func_start SetGameStat
|
||||
SetGameStat: @ 8054F00
|
||||
push {lr}
|
||||
adds r3, r1, 0
|
||||
lsls r0, 24
|
||||
|
|
@ -405,7 +405,7 @@ _08054F2A:
|
|||
.align 2, 0
|
||||
_08054F30: .4byte gSaveBlock1Ptr
|
||||
_08054F34: .4byte gSaveBlock2Ptr
|
||||
thumb_func_end sub_8054F00
|
||||
thumb_func_end SetGameStat
|
||||
|
||||
thumb_func_start sub_8054F38
|
||||
sub_8054F38: @ 8054F38
|
||||
|
|
|
|||
|
|
@ -10482,7 +10482,7 @@ _08139BA0:
|
|||
bl __floatsidf
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
ldr r3, _08139BDC @ =0x9999999a
|
||||
ldr r3, _08139BD8+4 @ =0x9999999a
|
||||
ldr r2, _08139BD8 @ =0x3fe99999
|
||||
bl __muldf3
|
||||
adds r5, r1, 0
|
||||
|
|
@ -10503,11 +10503,10 @@ _08139BA0:
|
|||
movs r0, 0x2
|
||||
b _08139C16
|
||||
.align 2, 0
|
||||
_08139BD8: .4byte 0x3fe99999
|
||||
_08139BDC: .4byte 0x9999999a
|
||||
_08139BD8: .double 0.8
|
||||
_08139BE0: .4byte gUnknown_203B170
|
||||
_08139BE4:
|
||||
ldr r3, _08139C08 @ =0x33333333
|
||||
ldr r3, _08139C04+4 @ =0x33333333
|
||||
ldr r2, _08139C04 @ =0x3fe33333
|
||||
ldr r0, [sp]
|
||||
ldr r1, [sp, 0x4]
|
||||
|
|
@ -10522,8 +10521,7 @@ _08139BE4:
|
|||
movs r0, 0x1
|
||||
b _08139C16
|
||||
.align 2, 0
|
||||
_08139C04: .4byte 0x3fe33333
|
||||
_08139C08: .4byte 0x33333333
|
||||
_08139C04: .double 0.6
|
||||
_08139C0C: .4byte gUnknown_203B170
|
||||
_08139C10:
|
||||
ldr r0, _08139C38 @ =gUnknown_203B170
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ _080CA318:
|
|||
ldrb r0, [r2, 0x11]
|
||||
orrs r1, r0
|
||||
movs r0, 0x1
|
||||
bl sub_8054F00
|
||||
bl SetGameStat
|
||||
_080CA33A:
|
||||
bl sub_804C1AC
|
||||
movs r0, 0x1
|
||||
|
|
|
|||
|
|
@ -4090,7 +4090,7 @@ _0808B1B8: .4byte 0x00007bce
|
|||
sub_808B1BC: @ 808B1BC
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _0808B1D0 @ =gUnknown_2039624
|
||||
ldr r2, _0808B1D0 @ =gTrainerCards
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 5
|
||||
|
|
@ -4098,7 +4098,7 @@ sub_808B1BC: @ 808B1BC
|
|||
ldrb r0, [r1, 0x1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0808B1D0: .4byte gUnknown_2039624
|
||||
_0808B1D0: .4byte gTrainerCards
|
||||
thumb_func_end sub_808B1BC
|
||||
|
||||
thumb_func_start sub_808B1D4
|
||||
|
|
@ -4792,7 +4792,7 @@ sub_808B700: @ 808B700
|
|||
ldr r0, [r5]
|
||||
ldr r1, _0808B760 @ =0x0000045c
|
||||
adds r0, r1
|
||||
ldr r2, _0808B764 @ =gUnknown_2039624
|
||||
ldr r2, _0808B764 @ =gTrainerCards
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 5
|
||||
|
|
@ -4818,7 +4818,7 @@ sub_808B700: @ 808B700
|
|||
_0808B758: .4byte gUnknown_20397A4
|
||||
_0808B75C: .4byte 0x00007bd0
|
||||
_0808B760: .4byte 0x0000045c
|
||||
_0808B764: .4byte gUnknown_2039624
|
||||
_0808B764: .4byte gTrainerCards
|
||||
_0808B768: .4byte gLinkPlayers
|
||||
_0808B76C: .4byte 0x00007bcf
|
||||
_0808B770: .4byte sub_80895B8
|
||||
|
|
@ -5070,7 +5070,7 @@ _0808B95C: .4byte sub_80895B8
|
|||
sub_808B960: @ 808B960
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, _0808B984 @ =gUnknown_2039624
|
||||
ldr r0, _0808B984 @ =gTrainerCards
|
||||
ldr r1, _0808B988 @ =gUnknown_83CD960
|
||||
movs r2, 0x60
|
||||
bl memcpy
|
||||
|
|
@ -5083,7 +5083,7 @@ sub_808B960: @ 808B960
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808B984: .4byte gUnknown_2039624
|
||||
_0808B984: .4byte gTrainerCards
|
||||
_0808B988: .4byte gUnknown_83CD960
|
||||
_0808B98C: .4byte sub_80895B8
|
||||
thumb_func_end sub_808B960
|
||||
|
|
@ -5092,7 +5092,7 @@ _0808B98C: .4byte sub_80895B8
|
|||
sub_808B990: @ 808B990
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldr r0, _0808B9B4 @ =gUnknown_2039624
|
||||
ldr r0, _0808B9B4 @ =gTrainerCards
|
||||
ldr r1, _0808B9B8 @ =gUnknown_83CD9C0
|
||||
movs r2, 0x60
|
||||
bl memcpy
|
||||
|
|
@ -5105,7 +5105,7 @@ sub_808B990: @ 808B990
|
|||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808B9B4: .4byte gUnknown_2039624
|
||||
_0808B9B4: .4byte gTrainerCards
|
||||
_0808B9B8: .4byte gUnknown_83CD9C0
|
||||
_0808B9BC: .4byte sub_80895B8
|
||||
thumb_func_end sub_808B990
|
||||
|
|
|
|||
BIN
baserom.ips
BIN
baserom.ips
Binary file not shown.
|
|
@ -105,26 +105,9 @@ gUnknown_83F6366:: @ 83F6366
|
|||
gUnknown_83F637C:: @ 83F637C
|
||||
.incbin "baserom.gba", 0x3F637C, 0xC
|
||||
|
||||
gUnknown_83F6388:: @ 83F6388
|
||||
.incbin "baserom.gba", 0x3F6388, 0xC0
|
||||
|
||||
gUnknown_83F6448:: @ 83F6448
|
||||
.incbin "baserom.gba", 0x3F6448, 0x20
|
||||
|
||||
gUnknown_83F6468:: @ 83F6468
|
||||
.incbin "baserom.gba", 0x3F6468, 0x800
|
||||
|
||||
gUnknown_83F6C68:: @ 83F6C68
|
||||
.incbin "baserom.gba", 0x3F6C68, 0x10
|
||||
|
||||
gUnknown_83F6C78:: @ 83F6C78
|
||||
.incbin "baserom.gba", 0x3F6C78, 0x4
|
||||
|
||||
gUnknown_83F6C7C:: @ 83F6C7C
|
||||
.incbin "baserom.gba", 0x3F6C7C, 0x8
|
||||
|
||||
gUnknown_83F6C84:: @ 83F6C84
|
||||
.incbin "baserom.gba", 0x3F6C84, 0x2C
|
||||
.section .rodata.83F6C90
|
||||
gUnknown_83F6C90:: @ 83F6C90
|
||||
.incbin "baserom.gba", 0x3F6C90, 0x20
|
||||
|
||||
gUnknown_83F6CB0:: @ 83F6CB0
|
||||
.incbin "baserom.gba", 0x3F6CB0, 0x6F8
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ SevenIsland_TrainerTower_Lobby_EventScript_164AD8:: @ 8164AD8
|
|||
lockall
|
||||
fadescreen 1
|
||||
setvar VAR_0x8004, 1
|
||||
special sub_80CD228
|
||||
special Special_BattleRecords
|
||||
waitstate
|
||||
releaseall
|
||||
end
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ gSpecials:: @ 815FD60
|
|||
def_special ScriptHatchMon
|
||||
def_special EggHatch
|
||||
def_special sub_8046EAC
|
||||
def_special sub_80CD228
|
||||
def_special Special_BattleRecords
|
||||
def_special IsEnoughForCostInVar0x8005
|
||||
def_special SubtractMoneyFromVar0x8005
|
||||
def_special ExecuteWhiteOut
|
||||
|
|
|
|||
|
|
@ -670,7 +670,7 @@ gUnknown_8416741:: @ 0x8416741
|
|||
.string "SEE YA!$"
|
||||
|
||||
gUnknown_8416749:: @ 8416749
|
||||
.string "IN BAG:{SIZE 0x00} {STR_VAR_1}$"
|
||||
.string "IN BAG:{SMALL} {STR_VAR_1}$"
|
||||
|
||||
gUnknown_8416757:: @ 8416757
|
||||
.string "Quit shopping.$"
|
||||
|
|
@ -1293,19 +1293,19 @@ gUnknown_841797F:: @ 0x841797F
|
|||
.string "INFO$"
|
||||
|
||||
gUnknown_8417984:: @ 0x8417984
|
||||
.string "FRESH WATER{CLEAR_TO 0x57}{SIZE 0x00}¥200$"
|
||||
.string "FRESH WATER{CLEAR_TO 0x57}{SMALL}¥200$"
|
||||
|
||||
gUnknown_841799A:: @ 0x841799A
|
||||
.string "SODA POP{CLEAR_TO 0x57}{SIZE 0x00}¥300$"
|
||||
.string "SODA POP{CLEAR_TO 0x57}{SMALL}¥300$"
|
||||
|
||||
gUnknown_84179AD:: @ 0x84179AD
|
||||
.string "LEMONADE{CLEAR_TO 0x57}{SIZE 0x00}¥350$"
|
||||
.string "LEMONADE{CLEAR_TO 0x57}{SMALL}¥350$"
|
||||
|
||||
gUnknown_84179C0:: @ 0x84179C0
|
||||
.string "{SIZE 0x00} 50 COINS{CLEAR_TO 0x45}¥1,000$"
|
||||
.string "{SMALL} 50 COINS{CLEAR_TO 0x45}¥1,000$"
|
||||
|
||||
gUnknown_84179D6:: @ 0x84179D6
|
||||
.string "{SIZE 0x00}500 COINS{CLEAR_TO 0x40}¥10,000$"
|
||||
.string "{SMALL}500 COINS{CLEAR_TO 0x40}¥10,000$"
|
||||
|
||||
gUnknown_84179ED:: @ 0x84179ED
|
||||
.string "Excellent$"
|
||||
|
|
@ -1335,19 +1335,19 @@ gUnknown_8417A3D:: @ 0x8417A3D
|
|||
.string "Left$"
|
||||
|
||||
gUnknown_8417A42:: @ 0x8417A42
|
||||
.string "TM13{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
|
||||
.string "TM13{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
|
||||
|
||||
gUnknown_8417A58:: @ 0x8417A58
|
||||
.string "TM23{CLEAR_TO 0x48}{SIZE 0x00}3,500 COINS$"
|
||||
.string "TM23{CLEAR_TO 0x48}{SMALL}3,500 COINS$"
|
||||
|
||||
gUnknown_8417A6E:: @ 0x8417A6E
|
||||
.string "TM24{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
|
||||
.string "TM24{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
|
||||
|
||||
gUnknown_8417A84:: @ 0x8417A84
|
||||
.string "TM30{CLEAR_TO 0x48}{SIZE 0x00}4,500 COINS$"
|
||||
.string "TM30{CLEAR_TO 0x48}{SMALL}4,500 COINS$"
|
||||
|
||||
gUnknown_8417A9A:: @ 0x8417A9A
|
||||
.string "TM35{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
|
||||
.string "TM35{CLEAR_TO 0x48}{SMALL}4,000 COINS$"
|
||||
|
||||
gUnknown_8417AB0:: @ 0x8417AB0
|
||||
.string "1F$"
|
||||
|
|
@ -1491,40 +1491,40 @@ gUnknown_8417C2D:: @ 8417C2D
|
|||
.string "COINS$"
|
||||
|
||||
gUnknown_8417C33:: @ 0x8417C33
|
||||
.string "BICYCLE{CLEAR_TO 0x49}{SIZE 0x00}¥1,000,000$"
|
||||
.string "BICYCLE{CLEAR_TO 0x49}{SMALL}¥1,000,000$"
|
||||
|
||||
gUnknown_8417C4B:: @ 0x8417C4B
|
||||
.string "NO THANKS$"
|
||||
|
||||
gUnknown_8417C55:: @ 0x8417C55
|
||||
.string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 180 COINS$"
|
||||
.string "ABRA{CLEAR_TO 0x55}{SMALL} 180 COINS$"
|
||||
|
||||
gUnknown_8417C6A:: @ 0x8417C6A
|
||||
.string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 500 COINS$"
|
||||
.string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 500 COINS$"
|
||||
|
||||
gUnknown_8417C83:: @ 0x8417C83
|
||||
.string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 2,800 COINS$"
|
||||
.string "DRATINI{CLEAR_TO 0x4B}{SMALL} 2,800 COINS$"
|
||||
|
||||
gUnknown_8417C9D:: @ 0x8417C9D
|
||||
.string "SCYTHER{CLEAR_TO 0x4B}{SIZE 0x00} 5,500 COINS$"
|
||||
.string "SCYTHER{CLEAR_TO 0x4B}{SMALL} 5,500 COINS$"
|
||||
|
||||
gUnknown_8417CB7:: @ 0x8417CB7
|
||||
.string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 9,999 COINS$"
|
||||
.string "PORYGON{CLEAR_TO 0x4B}{SMALL} 9,999 COINS$"
|
||||
|
||||
gUnknown_8417CD1:: @ 0x8417CD1
|
||||
.string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 120 COINS$"
|
||||
.string "ABRA{CLEAR_TO 0x55}{SMALL} 120 COINS$"
|
||||
|
||||
gUnknown_8417CE6:: @ 0x8417CE6
|
||||
.string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 750 COINS$"
|
||||
.string "CLEFAIRY{CLEAR_TO 0x55}{SMALL} 750 COINS$"
|
||||
|
||||
gUnknown_8417CFF:: @ 0x8417CFF
|
||||
.string "PINSIR{CLEAR_TO 0x4B}{SIZE 0x00} 2,500 COINS$"
|
||||
.string "PINSIR{CLEAR_TO 0x4B}{SMALL} 2,500 COINS$"
|
||||
|
||||
gUnknown_8417D18:: @ 0x8417D18
|
||||
.string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 4,600 COINS$"
|
||||
.string "DRATINI{CLEAR_TO 0x4B}{SMALL} 4,600 COINS$"
|
||||
|
||||
gUnknown_8417D32:: @ 0x8417D32
|
||||
.string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 6,500 COINS$"
|
||||
.string "PORYGON{CLEAR_TO 0x4B}{SMALL} 6,500 COINS$"
|
||||
|
||||
gUnknown_8417D4C:: @ 0x8417D4C
|
||||
.string "NO THANKS$"
|
||||
|
|
@ -1632,19 +1632,19 @@ gUnknown_8417ECC:: @ 0x8417ECC
|
|||
.string "BIRTH ISLAND$"
|
||||
|
||||
gUnknown_8417ED9:: @ 0x8417ED9
|
||||
.string "MIRACLE SEED{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
|
||||
.string "MIRACLE SEED{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
|
||||
|
||||
gUnknown_8417EF7:: @ 0x8417EF7
|
||||
.string "CHARCOAL{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
|
||||
.string "CHARCOAL{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
|
||||
|
||||
gUnknown_8417F11:: @ 0x8417F11
|
||||
.string "MYSTIC WATER{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
|
||||
.string "MYSTIC WATER{CLEAR_TO 0x50}{SMALL}1,000 COINS$"
|
||||
|
||||
gUnknown_8417F2F:: @ 0x8417F2F
|
||||
.string "YELLOW FLUTE{CLEAR_TO 0x50}{SIZE 0x00}1,600 COINS$"
|
||||
.string "YELLOW FLUTE{CLEAR_TO 0x50}{SMALL}1,600 COINS$"
|
||||
|
||||
gUnknown_8417F4D:: @ 0x8417F4D
|
||||
.string "SMOKE BALL{CLEAR_TO 0x5A}{SIZE 0x00}800 COINS$"
|
||||
.string "SMOKE BALL{CLEAR_TO 0x5A}{SMALL}800 COINS$"
|
||||
|
||||
gUnknown_8417F67:: @ 0x8417F67
|
||||
.string "$"
|
||||
|
|
@ -1782,51 +1782,51 @@ gUnknown_841809C:: @ 0x841809C
|
|||
.string "UNION ROOM$"
|
||||
|
||||
gUnknown_84180A7:: @ 0x84180A7
|
||||
.string "ENERGYPOWDER{CLEAR_TO 0x74}{SIZE 0x00}50$"
|
||||
.string "ENERGYPOWDER{CLEAR_TO 0x74}{SMALL}50$"
|
||||
|
||||
gUnknown_84180BC:: @ 0x84180BC
|
||||
.string "ENERGY ROOT{CLEAR_TO 0x74}{SIZE 0x00}80$"
|
||||
.string "ENERGY ROOT{CLEAR_TO 0x74}{SMALL}80$"
|
||||
|
||||
gUnknown_84180D0:: @ 0x84180D0
|
||||
.string "HEAL POWDER{CLEAR_TO 0x74}{SIZE 0x00}50$"
|
||||
.string "HEAL POWDER{CLEAR_TO 0x74}{SMALL}50$"
|
||||
|
||||
gUnknown_84180E4:: @ 0x84180E4
|
||||
.string "REVIVAL HERB{CLEAR_TO 0x6F}{SIZE 0x00}300$"
|
||||
.string "REVIVAL HERB{CLEAR_TO 0x6F}{SMALL}300$"
|
||||
|
||||
gUnknown_84180FA:: @ 0x84180FA
|
||||
.string "PROTEIN{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "PROTEIN{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_841810D:: @ 0x841810D
|
||||
.string "IRON{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "IRON{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_841811D:: @ 0x841811D
|
||||
.string "CARBOS{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "CARBOS{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_841812F:: @ 0x841812F
|
||||
.string "CALCIUM{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "CALCIUM{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_8418142:: @ 0x8418142
|
||||
.string "ZINC{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "ZINC{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_8418152:: @ 0x8418152
|
||||
.string "HP UP{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
|
||||
.string "HP UP{CLEAR_TO 0x65}{SMALL}1,000$"
|
||||
|
||||
gUnknown_8418163:: @ 0x8418163
|
||||
.string "PP UP{CLEAR_TO 0x65}{SIZE 0x00}3,000$"
|
||||
.string "PP UP{CLEAR_TO 0x65}{SMALL}3,000$"
|
||||
|
||||
gUnknown_8418174:: @ 8418174
|
||||
gString_BattleRecords_PlayersBattleResults:: @ 8418174
|
||||
.string "{PLAYER}'s BATTLE RESULTS$"
|
||||
|
||||
gUnknown_8418188:: @ 8418188
|
||||
gString_BattleRecords_TotalRecord:: @ 8418188
|
||||
.string "TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}$"
|
||||
|
||||
gUnknown_84181A4:: @ 84181A4
|
||||
gString_BattleRecords_ColumnHeaders:: @ 84181A4
|
||||
.string "WIN{CLEAR_TO 0x30}LOSE{CLEAR_TO 0x60}DRAW$"
|
||||
|
||||
gUnknown_84181B6:: @ 84181B6
|
||||
gString_BattleRecords_7Dashes:: @ 84181B6
|
||||
.string "-------$"
|
||||
|
||||
gUnknown_84181BE:: @ 84181BE
|
||||
gString_BattleRecords_4Dashes:: @ 84181BE
|
||||
.string "----$"
|
||||
|
||||
gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
|
||||
|
|
@ -2870,7 +2870,7 @@ gUnknown_841B2A7:: @ 841B2A7
|
|||
.string ".$"
|
||||
|
||||
gUnknown_841B2A9:: @ 0x841B2A9
|
||||
.string "{SIZE 0x00}MAX.{SIZE 0x02} HP$"
|
||||
.string "{SMALL}MAX.{SIZE 0x02} HP$"
|
||||
|
||||
gUnknown_841B2B7:: @ 0x841B2B7
|
||||
.string "ATTACK$"
|
||||
|
|
@ -2888,10 +2888,10 @@ gUnknown_841B2D4:: @ 0x841B2D4
|
|||
.string "SP. DEF$"
|
||||
|
||||
gUnknown_841B2DC:: @ 841B2DC
|
||||
.string "{SIZE 0x00}{EXTRA_PLUS}{SIZE 0x02}$"
|
||||
.string "{SMALL}{EXTRA_PLUS}{SIZE 0x02}$"
|
||||
|
||||
gUnknown_841B2E5:: @ 841B2E5
|
||||
.string "{SIZE 0x00}-{SIZE 0x02}$"
|
||||
.string "{SMALL}-{SIZE 0x02}$"
|
||||
|
||||
gUnknown_841B2ED:: @ 841B2ED
|
||||
.string "1, $"
|
||||
|
|
|
|||
BIN
graphics/battle_records/bg_tiles.png
Normal file
BIN
graphics/battle_records/bg_tiles.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 135 B |
19
graphics/battle_records/palette.pal
Normal file
19
graphics/battle_records/palette.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
115 197 164
|
||||
74 74 74
|
||||
189 131 156
|
||||
230 156 213
|
||||
222 238 255
|
||||
230 246 255
|
||||
148 115 139
|
||||
197 213 222
|
||||
172 164 189
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
0 0 0
|
||||
BIN
graphics/battle_records/tilemap.bin
Normal file
BIN
graphics/battle_records/tilemap.bin
Normal file
Binary file not shown.
|
|
@ -78,7 +78,8 @@ void c2_load_new_map(void);
|
|||
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
|
||||
void mapldr_default(void);
|
||||
|
||||
u32 GetGameStat(u8);
|
||||
u32 GetGameStat(u8 statId);
|
||||
u32 SetGameStat(u8 statId, u32 value);
|
||||
|
||||
void CB2_ContinueSavedGame(void);
|
||||
void sub_8055D5C(struct WarpData *);
|
||||
|
|
|
|||
|
|
@ -196,4 +196,11 @@ extern const u8 gUnknown_841B684[];
|
|||
extern const u8 gUnknown_841B68F[];
|
||||
extern const u8 gUnknown_841B698[];
|
||||
|
||||
// battle_records
|
||||
extern const u8 gString_BattleRecords_PlayersBattleResults[];
|
||||
extern const u8 gString_BattleRecords_TotalRecord[];
|
||||
extern const u8 gString_BattleRecords_ColumnHeaders[];
|
||||
extern const u8 gString_BattleRecords_7Dashes[];
|
||||
extern const u8 gString_BattleRecords_4Dashes[];
|
||||
|
||||
#endif //GUARD_STRINGS_H
|
||||
|
|
|
|||
43
include/trainer_card.h
Normal file
43
include/trainer_card.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
#ifndef GUARD_TRAINER_CARD_H
|
||||
#define GUARD_TRAINER_CARD_H
|
||||
|
||||
struct TrainerCard
|
||||
{
|
||||
/*0x00*/ u8 gender;
|
||||
/*0x01*/ u8 stars;
|
||||
/*0x02*/ bool8 hasPokedex;
|
||||
/*0x03*/ bool8 caughtAllHoenn;
|
||||
/*0x04*/ bool8 hasAllPaintings;
|
||||
/*0x06*/ u16 hofDebutHours;
|
||||
/*0x08*/ u16 hofDebutMinutes;
|
||||
/*0x0A*/ u16 hofDebutSeconds;
|
||||
/*0x0C*/ u16 caughtMonsCount;
|
||||
/*0x0E*/ u16 trainerId;
|
||||
/*0x10*/ u16 playTimeHours;
|
||||
/*0x12*/ u16 playTimeMinutes;
|
||||
/*0x14*/ u16 linkBattleWins;
|
||||
/*0x16*/ u16 linkBattleLosses;
|
||||
/*0x18*/ u16 battleTowerWins;
|
||||
/*0x1A*/ u16 battleTowerStraightWins;
|
||||
/*0x1C*/ u16 contestsWithFriends;
|
||||
/*0x1E*/ u16 pokeblocksWithFriends;
|
||||
/*0x20*/ u16 pokemonTrades;
|
||||
/*0x24*/ u32 money;
|
||||
/*0x28*/ u16 var_28[4];
|
||||
/*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
|
||||
/*0x38*/ u8 version;
|
||||
/*0x3A*/ u16 var_3A;
|
||||
/*0x3C*/ u32 berryCrushPoints;
|
||||
/*0x40*/ u32 unionRoomNum;
|
||||
/*0x44*/ u8 filler44[0x8];
|
||||
/*0x4C*/ u8 var_4C;
|
||||
/*0x4D*/ u8 var_4D;
|
||||
/*0x4E*/ u8 var_4E;
|
||||
/*0x4F*/ u8 var_4F;
|
||||
/*0x50*/ u8 var_50[0x4];
|
||||
/*0x54*/ u16 monSpecies[PARTY_SIZE];
|
||||
};
|
||||
|
||||
extern struct TrainerCard gTrainerCards[4];
|
||||
|
||||
#endif //GUARD_TRAINER_CARD_H
|
||||
6
include/trainer_tower.h
Normal file
6
include/trainer_tower.h
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef GUARD_TRAINER_TOWER_H
|
||||
#define GUARD_TRAINER_TOWER_H
|
||||
|
||||
void PrintTrainerTowerRecords(void);
|
||||
|
||||
#endif //GUARD_TRAINER_TOWER_H
|
||||
|
|
@ -187,7 +187,7 @@ SECTIONS {
|
|||
src/prof_pc.o(.text);
|
||||
src/hof_pc.o(.text);
|
||||
asm/field_specials.o(.text);
|
||||
asm/battle_records.o(.text);
|
||||
src/battle_records.o(.text);
|
||||
asm/evolution_scene.o(.text);
|
||||
src/coins.o(.text);
|
||||
src/fldeff_strength.o(.text);
|
||||
|
|
@ -416,6 +416,8 @@ SECTIONS {
|
|||
data/data_835B488.o(.rodata.83EEC98);
|
||||
src/battle_ai_script_commands.o(.rodata);
|
||||
data/data_83F5738.o(.rodata);
|
||||
src/battle_records.o(.rodata);
|
||||
data/data_83F5738.o(.rodata.83F6C90);
|
||||
src/save.o(.rodata);
|
||||
data/data_83FECCC.o(.rodata);
|
||||
src/intro.o(.rodata);
|
||||
|
|
|
|||
576
src/battle_records.c
Normal file
576
src/battle_records.c
Normal file
|
|
@ -0,0 +1,576 @@
|
|||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "main.h"
|
||||
#include "bg.h"
|
||||
#include "gpu_regs.h"
|
||||
#include "event_data.h"
|
||||
#include "palette.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
#include "window.h"
|
||||
#include "text_window.h"
|
||||
#include "battle.h"
|
||||
#include "trainer_tower.h"
|
||||
#include "trainer_pokemon_sprites.h"
|
||||
#include "scanline_effect.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "link.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
#include "strings.h"
|
||||
#include "trainer_card.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/maps.h"
|
||||
|
||||
static EWRAM_DATA u16 * sBg3TilemapBuffer_p = NULL;
|
||||
|
||||
static void MainCB2_SetUp(void);
|
||||
static void VBlankCB(void);
|
||||
static void MainCB2(void);
|
||||
static void Task_WaitFadeIn(u8 taskId);
|
||||
static void Task_WaitButton(u8 taskId);
|
||||
static void Task_FadeOut(u8 taskId);
|
||||
static void Task_DestroyAndReturnToField(u8 taskId);
|
||||
static void ClearWindowCommitAndRemove(u8 winddowId);
|
||||
static void ResetGpu(void);
|
||||
static void StopAllRunningTasks(void);
|
||||
static void EnableDisplay(void);
|
||||
static void ResetBGPos(void);
|
||||
static void PrintBattleRecords(void);
|
||||
static void CommitWindow(u8 windowId);
|
||||
static void LoadFrameGfxOnBg(u8 bgId);
|
||||
|
||||
static const u16 sTiles[] = INCBIN_U16("graphics/battle_records/bg_tiles.4bpp");
|
||||
static const u16 sPalette[] = INCBIN_U16("graphics/battle_records/palette.gbapal");
|
||||
static const u16 sTilemap[] = INCBIN_U16("graphics/battle_records/tilemap.bin");
|
||||
|
||||
static const struct WindowTemplate sWindowTemplates[] = {
|
||||
{
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 1,
|
||||
.width = 27,
|
||||
.height = 18,
|
||||
.paletteNum = 0xF,
|
||||
.baseBlock = 0x014
|
||||
}, DUMMY_WIN_TEMPLATE
|
||||
};
|
||||
|
||||
static const struct TextColor sTextColor = {
|
||||
0, 2, 3
|
||||
};
|
||||
|
||||
static const struct BgTemplate sBgTemplates[2] = {
|
||||
{
|
||||
.bg = 0,
|
||||
.charBaseIndex = 0,
|
||||
.mapBaseIndex = 31,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0, // 4bpp
|
||||
.priority = 0,
|
||||
.baseTile = 0x000
|
||||
}, {
|
||||
.bg = 3,
|
||||
.charBaseIndex = 1,
|
||||
.mapBaseIndex = 30,
|
||||
.screenSize = 0,
|
||||
.paletteMode = 0, // 4bpp
|
||||
.priority = 3,
|
||||
.baseTile = 0x000
|
||||
}
|
||||
};
|
||||
|
||||
static u8 *const sStringVars[3] = {
|
||||
gStringVar1,
|
||||
gStringVar2,
|
||||
gStringVar3
|
||||
};
|
||||
|
||||
void Special_BattleRecords(void)
|
||||
{
|
||||
SetVBlankCallback(NULL);
|
||||
SetMainCallback2(MainCB2_SetUp);
|
||||
}
|
||||
|
||||
static void MainCB2_SetUp(void)
|
||||
{
|
||||
switch (gMain.state)
|
||||
{
|
||||
case 0:
|
||||
SetVBlankCallback(NULL);
|
||||
ResetGpu();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 1:
|
||||
StopAllRunningTasks();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 2:
|
||||
sBg3TilemapBuffer_p = AllocZeroed(0x800);
|
||||
ResetBgsAndClearDma3BusyFlags(0);
|
||||
InitBgsFromTemplates(0, sBgTemplates, NELEMS(sBgTemplates));
|
||||
SetBgTilemapBuffer(3, sBg3TilemapBuffer_p);
|
||||
ResetBGPos();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 3:
|
||||
LoadFrameGfxOnBg(3);
|
||||
LoadPalette(stdpal_get(0), 0xF0, 0x20);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 4:
|
||||
if (IsDma3ManagerBusyWithBgCopy() != TRUE)
|
||||
{
|
||||
ShowBg(0);
|
||||
ShowBg(3);
|
||||
CopyBgTilemapBufferToVram(3);
|
||||
gMain.state++;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
InitWindows(sWindowTemplates);
|
||||
DeactivateAllTextPrinters();
|
||||
gMain.state++;
|
||||
break;
|
||||
case 6:
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
|
||||
gMain.state++;
|
||||
break;
|
||||
case 7:
|
||||
EnableDisplay();
|
||||
SetVBlankCallback(VBlankCB);
|
||||
if (gSpecialVar_0x8004)
|
||||
PrintTrainerTowerRecords();
|
||||
else
|
||||
PrintBattleRecords();
|
||||
CreateTask(Task_WaitFadeIn, 8);
|
||||
SetMainCallback2(MainCB2);
|
||||
gMain.state = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void VBlankCB(void)
|
||||
{
|
||||
LoadOam();
|
||||
ProcessSpriteCopyRequests();
|
||||
TransferPlttBuffer();
|
||||
}
|
||||
|
||||
static void MainCB2(void)
|
||||
{
|
||||
RunTasks();
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
UpdatePaletteFade();
|
||||
}
|
||||
|
||||
static void Task_WaitFadeIn(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
gTasks[taskId].func = Task_WaitButton;
|
||||
}
|
||||
|
||||
static void Task_WaitButton(u8 taskId)
|
||||
{
|
||||
struct Task * task = &gTasks[taskId];
|
||||
|
||||
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
task->func = Task_FadeOut;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_FadeOut(u8 taskId)
|
||||
{
|
||||
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
|
||||
gTasks[taskId].func = Task_DestroyAndReturnToField;
|
||||
}
|
||||
|
||||
static void Task_DestroyAndReturnToField(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
|
||||
Free(sBg3TilemapBuffer_p);
|
||||
ClearWindowCommitAndRemove(0);
|
||||
FreeAllWindowBuffers();
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
static void ClearWindowCommitAndRemove(u8 windowId)
|
||||
{
|
||||
FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
|
||||
ClearWindowTilemap(windowId);
|
||||
CopyWindowToVram(windowId, 2);
|
||||
RemoveWindow(windowId);
|
||||
}
|
||||
|
||||
static void ResetGpu(void)
|
||||
{
|
||||
{
|
||||
void * dest = (void *)VRAM;
|
||||
u32 size = VRAM_SIZE;
|
||||
DmaClearLarge16(3, dest, size, 0x1000);
|
||||
}
|
||||
|
||||
{
|
||||
void * dest = (void *)OAM;
|
||||
u32 size = OAM_SIZE;
|
||||
DmaClear32(3, dest, size);
|
||||
}
|
||||
|
||||
{
|
||||
void * dest = (void *)PLTT;
|
||||
u32 size = PLTT_SIZE;
|
||||
DmaClear16(3, dest, size);
|
||||
}
|
||||
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG3CNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BG3HOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_BG3VOFS, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0H, 0);
|
||||
SetGpuReg(REG_OFFSET_WIN0V, 0);
|
||||
SetGpuReg(REG_OFFSET_WININ, 0);
|
||||
SetGpuReg(REG_OFFSET_WINOUT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
}
|
||||
|
||||
static void StopAllRunningTasks(void)
|
||||
{
|
||||
ScanlineEffect_Stop();
|
||||
ResetTasks();
|
||||
ResetSpriteData();
|
||||
ResetAllPicSprites();
|
||||
ResetPaletteFade();
|
||||
FreeAllSpritePalettes();
|
||||
}
|
||||
|
||||
static void EnableDisplay(void)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON);
|
||||
}
|
||||
|
||||
static void ResetBGPos(void)
|
||||
{
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
ChangeBgX(1, 0, 0);
|
||||
ChangeBgY(1, 0, 0);
|
||||
ChangeBgX(2, 0, 0);
|
||||
ChangeBgY(2, 0, 0);
|
||||
ChangeBgX(3, 0, 0);
|
||||
ChangeBgY(3, 0, 0);
|
||||
}
|
||||
|
||||
static void InitLinkBattleRecord(struct LinkBattleRecord * record)
|
||||
{
|
||||
CpuFill16(0, record, sizeof(*record));
|
||||
record->name[0] = EOS;
|
||||
record->trainerId = 0;
|
||||
record->wins = 0;
|
||||
record->losses = 0;
|
||||
record->draws = 0;
|
||||
}
|
||||
|
||||
static void InitLinkBattleRecords_(struct LinkBattleRecords * records)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
|
||||
InitLinkBattleRecord(&records->entries[i]);
|
||||
SetGameStat(GAME_STAT_LINK_BATTLE_WINS, 0);
|
||||
SetGameStat(GAME_STAT_LINK_BATTLE_LOSSES, 0);
|
||||
SetGameStat(GAME_STAT_LINK_BATTLE_DRAWS, 0);
|
||||
}
|
||||
|
||||
static s32 GetLinkBattleRecordTotalBattles(struct LinkBattleRecord * record)
|
||||
{
|
||||
return record->wins + record->losses + record->draws;
|
||||
}
|
||||
|
||||
static s32 IndexOfOpponentLinkBattleRecord(struct LinkBattleRecords * records, const u8 * name, u16 trainerId)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
|
||||
{
|
||||
if (StringCompareN(records->entries[i].name, name, OT_NAME_LENGTH) == 0 && records->entries[i].trainerId == trainerId)
|
||||
return i;
|
||||
}
|
||||
|
||||
return LINK_B_RECORDS_COUNT;
|
||||
}
|
||||
|
||||
static void SortLinkBattleRecords(struct LinkBattleRecords * records)
|
||||
{
|
||||
struct LinkBattleRecord tmp;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
for (i = LINK_B_RECORDS_COUNT - 1; i > 0; i--)
|
||||
{
|
||||
for (j = i - 1; j >= 0; j--)
|
||||
{
|
||||
if (GetLinkBattleRecordTotalBattles(&records->entries[i]) > GetLinkBattleRecordTotalBattles(&records->entries[j]))
|
||||
{
|
||||
tmp = records->entries[i];
|
||||
records->entries[i] = records->entries[j];
|
||||
records->entries[j] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void UpdateLinkBattleRecord(struct LinkBattleRecord * record, s32 outcome)
|
||||
{
|
||||
switch (outcome)
|
||||
{
|
||||
case B_OUTCOME_WON:
|
||||
record->wins++;
|
||||
if (record->wins > 9999)
|
||||
record->wins = 9999;
|
||||
break;
|
||||
case B_OUTCOME_LOST:
|
||||
record->losses++;
|
||||
if (record->losses > 9999)
|
||||
record->losses = 9999;
|
||||
break;
|
||||
case B_OUTCOME_DREW:
|
||||
record->draws++;
|
||||
if (record->draws > 9999)
|
||||
record->draws = 9999;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void UpdateLinkBattleGameStats(s32 outcome)
|
||||
{
|
||||
u8 statId;
|
||||
|
||||
switch (outcome)
|
||||
{
|
||||
case B_OUTCOME_WON:
|
||||
statId = GAME_STAT_LINK_BATTLE_WINS;
|
||||
break;
|
||||
case B_OUTCOME_LOST:
|
||||
statId = GAME_STAT_LINK_BATTLE_LOSSES;
|
||||
break;
|
||||
case B_OUTCOME_DREW:
|
||||
statId = GAME_STAT_LINK_BATTLE_DRAWS;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if (GetGameStat(statId) < 9999)
|
||||
IncrementGameStat(statId);
|
||||
}
|
||||
|
||||
static void AddOpponentLinkBattleRecord(struct LinkBattleRecords * records, const u8 * name, u16 trainerId, s32 outcome, u32 language)
|
||||
{
|
||||
u8 namebuf[OT_NAME_LENGTH + 1];
|
||||
s32 i;
|
||||
struct LinkBattleRecord * record;
|
||||
|
||||
if (language == LANGUAGE_JAPANESE)
|
||||
{
|
||||
namebuf[0] = EXT_CTRL_CODE_BEGIN;
|
||||
namebuf[1] = EXT_CTRL_CODE_JPN;
|
||||
StringCopy(&namebuf[2], name);
|
||||
}
|
||||
else
|
||||
StringCopy(namebuf, name);
|
||||
UpdateLinkBattleGameStats(outcome);
|
||||
SortLinkBattleRecords(records);
|
||||
i = IndexOfOpponentLinkBattleRecord(records, namebuf, trainerId);
|
||||
if (i == LINK_B_RECORDS_COUNT)
|
||||
{
|
||||
i = LINK_B_RECORDS_COUNT - 1;
|
||||
record = &records->entries[LINK_B_RECORDS_COUNT - 1];
|
||||
InitLinkBattleRecord(record);
|
||||
StringCopyN(record->name, namebuf, OT_NAME_LENGTH);
|
||||
record->trainerId = trainerId;
|
||||
}
|
||||
UpdateLinkBattleRecord(&records->entries[i], outcome);
|
||||
SortLinkBattleRecords(records);
|
||||
}
|
||||
|
||||
void InitLinkBattleRecords(void)
|
||||
{
|
||||
InitLinkBattleRecords_(&gSaveBlock2Ptr->linkBattleRecords);
|
||||
}
|
||||
|
||||
static void IncTrainerCardWinCount(s32 battlerId)
|
||||
{
|
||||
u16 *wins = &gTrainerCards[battlerId].linkBattleWins;
|
||||
(*wins)++;
|
||||
if (*wins > 9999)
|
||||
*wins = 9999;
|
||||
}
|
||||
|
||||
static void IncTrainerCardLossCount(s32 battlerId)
|
||||
{
|
||||
u16 *losses = &gTrainerCards[battlerId].linkBattleLosses;
|
||||
(*losses)++;
|
||||
if (*losses > 9999)
|
||||
*losses = 9999;
|
||||
}
|
||||
|
||||
static void UpdateBattleOutcomeOnTrainerCards(s32 battlerId)
|
||||
{
|
||||
switch (gBattleOutcome)
|
||||
{
|
||||
case B_OUTCOME_WON:
|
||||
IncTrainerCardWinCount(battlerId ^ 1);
|
||||
IncTrainerCardLossCount(battlerId);
|
||||
break;
|
||||
case B_OUTCOME_LOST:
|
||||
IncTrainerCardLossCount(battlerId ^ 1);
|
||||
IncTrainerCardWinCount(battlerId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void TryRecordLinkBattleOutcome(s32 battlerId)
|
||||
{
|
||||
if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(UNKNOWN_MAP_00_04) || gSaveBlock1Ptr->location.mapNum != MAP_NUM(UNKNOWN_MAP_00_04))
|
||||
{
|
||||
UpdateBattleOutcomeOnTrainerCards(battlerId);
|
||||
AddOpponentLinkBattleRecord(&gSaveBlock2Ptr->linkBattleRecords, gTrainerCards[battlerId].playerName, gTrainerCards[battlerId].trainerId, gBattleOutcome, gLinkPlayers[battlerId].language);
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintTotalRecord(struct LinkBattleRecords * records)
|
||||
{
|
||||
u32 nwins = GetGameStat(GAME_STAT_LINK_BATTLE_WINS);
|
||||
u32 nlosses = GetGameStat(GAME_STAT_LINK_BATTLE_LOSSES);
|
||||
u32 ndraws = GetGameStat(GAME_STAT_LINK_BATTLE_DRAWS);
|
||||
s32 i;
|
||||
s32 j;
|
||||
bool32 foundEnd;
|
||||
u8 * strvar;
|
||||
|
||||
if (nwins > 9999)
|
||||
nwins = 9999;
|
||||
if (nlosses > 9999)
|
||||
nlosses = 9999;
|
||||
if (ndraws > 9999)
|
||||
ndraws = 9999;
|
||||
|
||||
ConvertIntToDecimalStringN(gStringVar1, nwins, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
ConvertIntToDecimalStringN(gStringVar2, nlosses, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
ConvertIntToDecimalStringN(gStringVar3, ndraws, STR_CONV_MODE_LEFT_ALIGN, 4);
|
||||
|
||||
for (i = 0; i < NELEMS(sStringVars); i++)
|
||||
{
|
||||
strvar = sStringVars[i];
|
||||
foundEnd = FALSE;
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
if (!foundEnd && *strvar == EOS)
|
||||
foundEnd = TRUE;
|
||||
if (foundEnd)
|
||||
*strvar = CHAR_SPACE;
|
||||
strvar++;
|
||||
}
|
||||
*strvar = 0xFF;
|
||||
}
|
||||
|
||||
StringExpandPlaceholders(gStringVar4, gString_BattleRecords_TotalRecord);
|
||||
AddTextPrinterParameterized4(0, 2, 12, 24, 0, 2, &sTextColor, 0, gStringVar4);
|
||||
}
|
||||
|
||||
static void PrintOpponentBattleRecord(struct LinkBattleRecord * record, u8 y)
|
||||
{
|
||||
u8 i = 0;
|
||||
s32 x;
|
||||
|
||||
if (record->wins == 0 && record->losses == 0 && record->draws == 0)
|
||||
{
|
||||
AddTextPrinterParameterized4(0, 2, 0, y, 0, 2, &sTextColor, 0, gString_BattleRecords_7Dashes);
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
x = 0x54;
|
||||
else if (i == 1)
|
||||
x = 0x84;
|
||||
else
|
||||
x = 0xB4;
|
||||
AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gString_BattleRecords_4Dashes);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
x = 0;
|
||||
StringFillWithTerminator(gStringVar1, OT_NAME_LENGTH + 1);
|
||||
StringCopyN(gStringVar1, record->name, OT_NAME_LENGTH);
|
||||
}
|
||||
else if (i == 1)
|
||||
{
|
||||
x = 0x54;
|
||||
ConvertIntToDecimalStringN(gStringVar1, record->wins, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
}
|
||||
else if (i == 2)
|
||||
{
|
||||
x = 0x84;
|
||||
ConvertIntToDecimalStringN(gStringVar1, record->losses, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
x = 0xB4;
|
||||
ConvertIntToDecimalStringN(gStringVar1, record->draws, STR_CONV_MODE_RIGHT_ALIGN, 4);
|
||||
}
|
||||
AddTextPrinterParameterized4(0, 2, x, y, 0, 2, &sTextColor, 0, gStringVar1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void PrintBattleRecords(void)
|
||||
{
|
||||
u32 left;
|
||||
s32 i;
|
||||
|
||||
FillWindowPixelRect(0, PIXEL_FILL(0), 0, 0, 0xD8, 0x90);
|
||||
StringExpandPlaceholders(gStringVar4, gString_BattleRecords_PlayersBattleResults);
|
||||
left = 0xD0 - GetStringWidth(2, gStringVar4, -1);
|
||||
AddTextPrinterParameterized4(0, 2, left / 2, 4, 0, 2, &sTextColor, 0, gStringVar4);
|
||||
PrintTotalRecord(&gSaveBlock2Ptr->linkBattleRecords);
|
||||
AddTextPrinterParameterized4(0, 2, 0x54, 0x30, 0, 2, &sTextColor, 0, gString_BattleRecords_ColumnHeaders);
|
||||
for (i = 0; i < LINK_B_RECORDS_COUNT; i++)
|
||||
PrintOpponentBattleRecord(&gSaveBlock2Ptr->linkBattleRecords.entries[i], 0x3D + 14 * i);
|
||||
CommitWindow(0);
|
||||
}
|
||||
|
||||
static void CommitWindow(u8 windowId)
|
||||
{
|
||||
PutWindowTilemap(windowId);
|
||||
CopyWindowToVram(windowId, 3);
|
||||
}
|
||||
|
||||
static void LoadFrameGfxOnBg(u8 bg)
|
||||
{
|
||||
LoadBgTiles(bg, sTiles, 0xC0, 0);
|
||||
CopyToBgTilemapBufferRect(bg, sTilemap, 0, 0, 32, 32);
|
||||
LoadPalette(sPalette, 0, 0x20);
|
||||
}
|
||||
|
|
@ -566,10 +566,10 @@ void sub_815D8C8(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_815D8F8(void) // fakematching
|
||||
void sub_815D8F8(void)
|
||||
{
|
||||
u8 i;
|
||||
register u32 found_map asm("r4") = 0xFF;
|
||||
u8 found_map = 0xFF;
|
||||
for (i = 0; i < 15; i++)
|
||||
{
|
||||
if (gUnknown_8479D34[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_8479D34[i].mapNum == gSaveBlock1Ptr->location.mapNum)
|
||||
|
|
@ -1425,7 +1425,7 @@ void sub_815EC0C(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sub_815EC8C(void)
|
||||
void PrintTrainerTowerRecords(void)
|
||||
{
|
||||
s32 i;
|
||||
u8 windowId = 0;
|
||||
|
|
|
|||
|
|
@ -835,17 +835,8 @@ gFieldEffectArguments: @ 20386E0
|
|||
gUnknown_2039620: @ 2039620
|
||||
.space 0x4
|
||||
|
||||
gUnknown_2039624: @ 2039624
|
||||
.space 0x14
|
||||
|
||||
gUnknown_2039638: @ 2039638
|
||||
.space 0x2
|
||||
|
||||
gUnknown_203963A: @ 203963A
|
||||
.space 0x1A
|
||||
|
||||
gUnknown_2039654: @ 2039654
|
||||
.space 0x150
|
||||
gTrainerCards: @ 2039624
|
||||
.space 0x180
|
||||
|
||||
gUnknown_20397A4: @ 20397A4
|
||||
.space 0x4
|
||||
|
|
@ -1055,8 +1046,7 @@ gUnknown_2039A1A: @ 2039A1A
|
|||
gUnknown_2039A1B: @ 2039A1B
|
||||
.space 0x1
|
||||
|
||||
gUnknown_2039A1C: @ 2039A1C
|
||||
.space 0x4
|
||||
.include "src/battle_records.o"
|
||||
|
||||
gUnknown_2039A20: @ 2039A20
|
||||
.space 0x4
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user