mirror of
https://github.com/pret/pmd-sky.git
synced 2026-04-24 23:09:54 -05:00
Merge branch 'main' of https://github.com/pret/pmd-sky
This commit is contained in:
commit
684201c7de
|
|
@ -8,17 +8,15 @@
|
|||
.public LoadScriptVariableValue
|
||||
.public LoadScriptVariableValueAtIndex
|
||||
.public MemcpySimple
|
||||
.public RandInt
|
||||
.public SCRIPT_VARS_VALUES
|
||||
.public SaveScriptVariableValue
|
||||
.public SaveScriptVariableValueAtIndex
|
||||
.public ScenarioFlagBackup
|
||||
.public ZinitScriptVariable
|
||||
.public _0209CEAC
|
||||
.public _0209CF28
|
||||
.public EVENT_FLAG_PROG_POS_INFO
|
||||
.public _0209CF48
|
||||
.public _0209CF64
|
||||
.public _0209CF84
|
||||
.public _0209DFA0
|
||||
.public _s32_div_f
|
||||
.public FlagCalc
|
||||
.public sub_0204CBE8
|
||||
|
|
@ -4,20 +4,29 @@
|
|||
.public CalcStatusDuration
|
||||
.public ChangeShayminForme
|
||||
.public CopyStringFromId
|
||||
.public DefenderAbilityIsActive__02311B94
|
||||
.public DIRECTIONS_XY
|
||||
.public DUNGEON_PTR
|
||||
.public DefenderAbilityIsActive__02311B94
|
||||
.public EntityIsValid__023118B4
|
||||
.public ExclusiveItemEffectIsActiveWithLogging
|
||||
.public GetMessageLogPreprocessorArgs
|
||||
.public GetTile
|
||||
.public GetTileAtEntity
|
||||
.public GetTreatmentBetweenMonstersIgnoreStatus
|
||||
.public IsProtectedFromNegativeStatus
|
||||
.public IsProtectedFromSleepClassStatus
|
||||
.public IsProtectedFromStatDrops
|
||||
.public ItemIsActive__02311BF8
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public MonsterIsType
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SafeguardIsActive
|
||||
.public SetMessageLogPreprocessorArgsString
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SetPreprocessorArgsStringToName
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateQuickFeet
|
||||
.public UpdateStatusIconFlags
|
||||
.public ov10_022C4728
|
||||
.public ov10_022C479C
|
||||
.public ov10_022C47A0
|
||||
|
|
@ -45,18 +54,6 @@
|
|||
.public ov29_022E4C4C
|
||||
.public ov29_022E4D24
|
||||
.public ov29_022E4D28
|
||||
.public ov29_022E4DCC
|
||||
.public ov29_022E4E74
|
||||
.public ov29_022E4F1C
|
||||
.public ov29_022E53EC
|
||||
.public GetTreatmentBetweenMonstersIgnoreStatus
|
||||
.public ov29_02304A48
|
||||
.public ov29_02304A84
|
||||
.public SafeguardIsActive
|
||||
.public SECONDARY_TERRAIN_TYPES
|
||||
.public SetMessageLogPreprocessorArgsString
|
||||
.public SetPreprocessorArgsIdVal
|
||||
.public SetPreprocessorArgsStringToName
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public TryActivateQuickFeet
|
||||
.public UpdateStatusIconFlags
|
||||
|
|
|
|||
11
asm/include/overlay_29_0231399C.inc
Normal file
11
asm/include/overlay_29_0231399C.inc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
.public AbilityIsActiveVeneer
|
||||
.public AllocateTemp1024ByteBufferFromPool
|
||||
.public CopyStringFromId
|
||||
.public EntityIsValid__023118B4
|
||||
.public LogMessageByIdWithPopupCheckUserTarget
|
||||
.public SetMessageLogPreprocessorArgsString
|
||||
.public SubstitutePlaceholderStringTags
|
||||
.public UpdateStatusIconFlags
|
||||
.public ov29_022E4E74
|
||||
.public ov29_022E4F1C
|
||||
|
|
@ -1,87 +1,8 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "main_0204BCAC.inc"
|
||||
.include "main_0204BD98.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_0204BCAC
|
||||
sub_0204BCAC: ; 0x0204BCAC
|
||||
stmdb sp!, {r3, lr}
|
||||
sub sp, sp, #8
|
||||
cmp r2, #0xb
|
||||
addls pc, pc, r2, lsl #2
|
||||
b _0204BD68
|
||||
_0204BCC0: ; jump table
|
||||
b _0204BCF0 ; case 0
|
||||
b _0204BCF8 ; case 1
|
||||
b _0204BD00 ; case 2
|
||||
b _0204BD08 ; case 3
|
||||
b _0204BD14 ; case 4
|
||||
b _0204BD1C ; case 5
|
||||
b _0204BD28 ; case 6
|
||||
b _0204BD30 ; case 7
|
||||
b _0204BD38 ; case 8
|
||||
b _0204BD40 ; case 9
|
||||
b _0204BD4C ; case 10
|
||||
b _0204BD5C ; case 11
|
||||
_0204BCF0:
|
||||
mov r0, r1
|
||||
b _0204BD88
|
||||
_0204BCF8:
|
||||
sub r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD00:
|
||||
add r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD08:
|
||||
mul r1, r0, r1
|
||||
mov r0, r1
|
||||
b _0204BD88
|
||||
_0204BD14:
|
||||
bl _s32_div_f
|
||||
b _0204BD88
|
||||
_0204BD1C:
|
||||
bl _s32_div_f
|
||||
mov r0, r1
|
||||
b _0204BD88
|
||||
_0204BD28:
|
||||
and r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD30:
|
||||
orr r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD38:
|
||||
eor r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD40:
|
||||
mov r2, #1
|
||||
orr r0, r0, r2, lsl r1
|
||||
b _0204BD88
|
||||
_0204BD4C:
|
||||
mov r2, #1
|
||||
mvn r1, r2, lsl r1
|
||||
and r0, r0, r1
|
||||
b _0204BD88
|
||||
_0204BD5C:
|
||||
mov r0, r1
|
||||
bl RandInt
|
||||
b _0204BD88
|
||||
_0204BD68:
|
||||
ldr r1, _0204BD90 ; =_0209CEAC
|
||||
add r0, sp, #0
|
||||
ldr r3, [r1, #4]
|
||||
ldr ip, [r1]
|
||||
ldr r1, _0204BD94 ; =_0209CF28
|
||||
str ip, [sp]
|
||||
str r3, [sp, #4]
|
||||
bl Debug_FatalError
|
||||
_0204BD88:
|
||||
add sp, sp, #8
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0204BD90: .word _0209CEAC
|
||||
_0204BD94: .word _0209CF28
|
||||
arm_func_end sub_0204BCAC
|
||||
|
||||
arm_func_start sub_0204BD98
|
||||
sub_0204BD98: ; 0x0204BD98
|
||||
stmdb sp!, {r3, lr}
|
||||
|
|
@ -162,7 +83,7 @@ _0204BE88:
|
|||
and r0, r2, #0xff
|
||||
b _0204BEBC
|
||||
_0204BE9C:
|
||||
ldr r1, _0204BEC4 ; =_0209CEAC
|
||||
ldr r1, _0204BEC4 ; =EVENT_FLAG_PROG_POS_INFO
|
||||
add r0, sp, #0
|
||||
ldr r3, [r1, #0xc]
|
||||
ldr ip, [r1, #8]
|
||||
|
|
@ -174,16 +95,16 @@ _0204BEBC:
|
|||
add sp, sp, #8
|
||||
ldmia sp!, {r3, pc}
|
||||
.align 2, 0
|
||||
_0204BEC4: .word _0209CEAC
|
||||
_0204BEC4: .word EVENT_FLAG_PROG_POS_INFO
|
||||
_0204BEC8: .word _0209CF48
|
||||
arm_func_end sub_0204BD98
|
||||
|
||||
arm_func_start sub_0204BECC
|
||||
sub_0204BECC: ; 0x0204BECC
|
||||
ldr ip, _0204BED4 ; =sub_0204BCAC
|
||||
ldr ip, _0204BED4 ; =FlagCalc
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0204BED4: .word sub_0204BCAC
|
||||
_0204BED4: .word FlagCalc
|
||||
arm_func_end sub_0204BECC
|
||||
|
||||
arm_func_start sub_0204BED8
|
||||
|
|
@ -196,7 +117,7 @@ sub_0204BED8: ; 0x0204BED8
|
|||
bl LoadScriptVariableValue
|
||||
mov r1, r5
|
||||
mov r2, r4
|
||||
bl sub_0204BCAC
|
||||
bl FlagCalc
|
||||
mov r2, r0
|
||||
mov r0, r7
|
||||
mov r1, r6
|
||||
|
|
@ -219,7 +140,7 @@ sub_0204BF10: ; 0x0204BF10
|
|||
mov r1, r0
|
||||
mov r0, r4
|
||||
mov r2, r5
|
||||
bl sub_0204BCAC
|
||||
bl FlagCalc
|
||||
mov r2, r0
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
|
|
@ -8179,8 +8179,8 @@ _0209CE9C:
|
|||
.global _0209CEA4
|
||||
_0209CEA4:
|
||||
.byte 0x4C, 0x4F, 0x43, 0x41, 0x4C, 0x31, 0x00, 0x00
|
||||
.global _0209CEAC
|
||||
_0209CEAC:
|
||||
.global EVENT_FLAG_PROG_POS_INFO
|
||||
EVENT_FLAG_PROG_POS_INFO:
|
||||
.word _0209CEBC
|
||||
.byte 0xE9, 0x03, 0x00, 0x00
|
||||
.word _0209CEBC
|
||||
|
|
@ -8208,8 +8208,8 @@ _0209CF0C:
|
|||
.byte 0x45, 0x76, 0x65, 0x6E, 0x74, 0x46, 0x6C, 0x61
|
||||
.byte 0x67, 0x53, 0x69, 0x7A, 0x65, 0x20, 0x25, 0x30, 0x34, 0x78, 0x2F, 0x25, 0x30, 0x34, 0x78, 0x0A
|
||||
.byte 0x00, 0x00, 0x00, 0x00
|
||||
.global _0209CF28
|
||||
_0209CF28:
|
||||
.global EVENT_FLAG_EXPANSION_ERROR
|
||||
EVENT_FLAG_EXPANSION_ERROR:
|
||||
.byte 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x65
|
||||
.byte 0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x25
|
||||
.byte 0x64, 0x00, 0x00, 0x00
|
||||
|
|
|
|||
|
|
@ -2135,336 +2135,3 @@ _02313808: .word 0x00000DCC + LOWER_OFFENSIVE_STAT_OFFSET
|
|||
_0231380C: .word 0x00000D91 + LOWER_OFFENSIVE_STAT_OFFSET
|
||||
_02313810: .word 0x00000DD9 + LOWER_OFFENSIVE_STAT_OFFSET
|
||||
arm_func_end LowerOffensiveStat
|
||||
|
||||
arm_func_start LowerDefensiveStat
|
||||
LowerDefensiveStat: ; 0x02313814
|
||||
#ifdef JAPAN
|
||||
#define LOWER_DEFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define LOWER_DEFENSIVE_STAT_OFFSET 0
|
||||
#endif
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r4, r5, r6, r7, r8, lr}
|
||||
mov r7, r1
|
||||
mov r5, r3
|
||||
mov r8, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r6, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r4, r0
|
||||
mov r1, r5, lsl #0x10
|
||||
mov r0, r7
|
||||
mov r5, r1, asr #0x10
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
beq _0231397C
|
||||
ldr r0, [sp, #0x20]
|
||||
cmp r0, #0
|
||||
beq _02313878
|
||||
ldr r1, _02313988 ; =0x00000DC9
|
||||
mov r0, r6
|
||||
bl CopyStringFromId
|
||||
mov r1, r6
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313890
|
||||
_02313878:
|
||||
ldr r1, _0231398C ; =0x00000DC8
|
||||
mov r0, r6
|
||||
bl CopyStringFromId
|
||||
mov r1, r6
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313890:
|
||||
ldrb r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _023138B4
|
||||
ldrb r2, [sp, #0x2c]
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl IsProtectedFromStatDrops
|
||||
cmp r0, #0
|
||||
bne _0231397C
|
||||
_023138B4:
|
||||
mov r0, #0
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
ldr r6, [r7, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, sp, #0x20
|
||||
ldr r1, [r1]
|
||||
mov r0, r7
|
||||
bl ov29_022E4DCC
|
||||
mov r0, r7
|
||||
mov r1, #0x61
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, r5, lsl #0x11
|
||||
movne r5, r0, asr #0x10
|
||||
cmp r5, #1
|
||||
bne _02313914
|
||||
ldr r1, _02313990 ; =0x00000DCD
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _0231392C
|
||||
_02313914:
|
||||
ldr r1, _02313994 ; =0x00000DCC
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_0231392C:
|
||||
ldr r1, [sp, #0x20]
|
||||
add r0, r6, r1, lsl #1
|
||||
ldrsh r0, [r0, #0x28]
|
||||
subs r4, r0, r5
|
||||
movmi r4, #0
|
||||
cmp r4, r0
|
||||
beq _02313964
|
||||
add r3, r6, r1, lsl #1
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
mov r2, #0xd90 + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
strh r4, [r3, #0x28]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02313974
|
||||
_02313964:
|
||||
ldr r2, _02313998 ; =0x00000DD7
|
||||
mov r0, r8
|
||||
mov r1, r7
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02313974:
|
||||
mov r0, r7
|
||||
bl UpdateStatusIconFlags
|
||||
_0231397C:
|
||||
ldmia sp!, {r4, r5, r6, r7, r8, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_02313988: .word 0x00000DC9 + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
_0231398C: .word 0x00000DC8 + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
_02313990: .word 0x00000DCD + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
_02313994: .word 0x00000DCC + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
_02313998: .word 0x00000DD7 + LOWER_DEFENSIVE_STAT_OFFSET
|
||||
arm_func_end LowerDefensiveStat
|
||||
|
||||
arm_func_start BoostOffensiveStat
|
||||
BoostOffensiveStat: ; 0x0231399C
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov r6, r3
|
||||
mov sb, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r4, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r5, r0
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r8
|
||||
mov r6, r1, asr #0x10
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
beq _02313AE4
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r7, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, sp, #0x28
|
||||
ldr r1, [r1]
|
||||
mov r0, r8
|
||||
bl ov29_022E4E74
|
||||
ldr r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _02313A24
|
||||
ldr r1, _02313AF0 ; =0x00000DCB
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313A3C
|
||||
_02313A24:
|
||||
ldr r1, _02313AF4 ; =0x00000DCA
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313A3C:
|
||||
mov r0, r8
|
||||
mov r1, #0x61
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, r6, lsl #0x11
|
||||
movne r6, r0, asr #0x10
|
||||
cmp r6, #1
|
||||
bne _02313A78
|
||||
ldr r1, _02313AF8 ; =0x00000DCD
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313A90
|
||||
_02313A78:
|
||||
ldr r1, _02313AFC ; =0x00000DCC
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313A90:
|
||||
ldr r1, [sp, #0x28]
|
||||
add r0, r7, r1, lsl #1
|
||||
ldrsh r0, [r0, #0x24]
|
||||
add r4, r0, r6
|
||||
cmp r4, #0x14
|
||||
movge r4, #0x14
|
||||
cmp r4, r0
|
||||
beq _02313ACC
|
||||
ldr r2, _02313B00 ; =0x00000D8F
|
||||
add r3, r7, r1, lsl #1
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
strh r4, [r3, #0x24]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02313ADC
|
||||
_02313ACC:
|
||||
ldr r2, _02313B04 ; =0x00000DD8
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02313ADC:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
_02313AE4:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define BOOST_OFFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define BOOST_OFFENSIVE_STAT_OFFSET 0
|
||||
#endif
|
||||
_02313AF0: .word 0x00000DCB + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AF4: .word 0x00000DCA + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AF8: .word 0x00000DCD + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AFC: .word 0x00000DCC + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313B00: .word 0x00000D8F + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313B04: .word 0x00000DD8 + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
arm_func_end BoostOffensiveStat
|
||||
|
||||
; https://decomp.me/scratch/90P8f
|
||||
arm_func_start BoostDefensiveStat
|
||||
BoostDefensiveStat: ; 0x02313B08
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov r6, r3
|
||||
mov sb, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r4, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r5, r0
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r8
|
||||
mov r6, r1, asr #0x10
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
beq _02313C50
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r7, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, sp, #0x28
|
||||
ldr r1, [r1]
|
||||
mov r0, r8
|
||||
bl ov29_022E4F1C
|
||||
ldr r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _02313B90
|
||||
ldr r1, _02313C5C ; =0x00000DC9
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313BA8
|
||||
_02313B90:
|
||||
ldr r1, _02313C60 ; =0x00000DC8
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313BA8:
|
||||
mov r0, r8
|
||||
mov r1, #0x61
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, r6, lsl #0x11
|
||||
movne r6, r0, asr #0x10
|
||||
cmp r6, #1
|
||||
bne _02313BE4
|
||||
ldr r1, _02313C64 ; =0x00000DCD
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313BFC
|
||||
_02313BE4:
|
||||
ldr r1, _02313C68 ; =0x00000DCC
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313BFC:
|
||||
ldr r1, [sp, #0x28]
|
||||
add r0, r7, r1, lsl #1
|
||||
ldrsh r0, [r0, #0x28]
|
||||
add r4, r0, r6
|
||||
cmp r4, #0x14
|
||||
movge r4, #0x14
|
||||
cmp r4, r0
|
||||
beq _02313C38
|
||||
ldr r2, _02313C6C ; =0x00000D8E
|
||||
add r3, r7, r1, lsl #1
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
strh r4, [r3, #0x28]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02313C48
|
||||
_02313C38:
|
||||
ldr r2, _02313C70 ; =0x00000DD6
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02313C48:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
_02313C50:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define BOOST_DEFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define BOOST_DEFENSIVE_STAT_OFFSET 0
|
||||
#endif
|
||||
_02313C5C: .word 0x00000DC9 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C60: .word 0x00000DC8 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C64: .word 0x00000DCD + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C68: .word 0x00000DCC + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C6C: .word 0x00000D8E + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C70: .word 0x00000DD6 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
arm_func_end BoostDefensiveStat
|
||||
|
|
|
|||
221
asm/overlay_29_0231399C.s
Normal file
221
asm/overlay_29_0231399C.s
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "overlay_29_0231399C.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start BoostOffensiveStat
|
||||
BoostOffensiveStat: ; 0x0231399C
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov r6, r3
|
||||
mov sb, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r4, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r5, r0
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r8
|
||||
mov r6, r1, asr #0x10
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
beq _02313AE4
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r7, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, sp, #0x28
|
||||
ldr r1, [r1]
|
||||
mov r0, r8
|
||||
bl ov29_022E4E74
|
||||
ldr r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _02313A24
|
||||
ldr r1, _02313AF0 ; =0x00000DCB
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313A3C
|
||||
_02313A24:
|
||||
ldr r1, _02313AF4 ; =0x00000DCA
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313A3C:
|
||||
mov r0, r8
|
||||
mov r1, #0x61
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, r6, lsl #0x11
|
||||
movne r6, r0, asr #0x10
|
||||
cmp r6, #1
|
||||
bne _02313A78
|
||||
ldr r1, _02313AF8 ; =0x00000DCD
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313A90
|
||||
_02313A78:
|
||||
ldr r1, _02313AFC ; =0x00000DCC
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313A90:
|
||||
ldr r1, [sp, #0x28]
|
||||
add r0, r7, r1, lsl #1
|
||||
ldrsh r0, [r0, #0x24]
|
||||
add r4, r0, r6
|
||||
cmp r4, #0x14
|
||||
movge r4, #0x14
|
||||
cmp r4, r0
|
||||
beq _02313ACC
|
||||
ldr r2, _02313B00 ; =0x00000D8F
|
||||
add r3, r7, r1, lsl #1
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
strh r4, [r3, #0x24]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02313ADC
|
||||
_02313ACC:
|
||||
ldr r2, _02313B04 ; =0x00000DD8
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02313ADC:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
_02313AE4:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define BOOST_OFFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define BOOST_OFFENSIVE_STAT_OFFSET 0
|
||||
#endif
|
||||
_02313AF0: .word 0x00000DCB + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AF4: .word 0x00000DCA + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AF8: .word 0x00000DCD + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313AFC: .word 0x00000DCC + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313B00: .word 0x00000D8F + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
_02313B04: .word 0x00000DD8 + BOOST_OFFENSIVE_STAT_OFFSET
|
||||
arm_func_end BoostOffensiveStat
|
||||
|
||||
; https://decomp.me/scratch/90P8f
|
||||
arm_func_start BoostDefensiveStat
|
||||
BoostDefensiveStat: ; 0x02313B08
|
||||
stmdb sp!, {r0, r1, r2, r3}
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
mov r8, r1
|
||||
mov r6, r3
|
||||
mov sb, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r4, r0
|
||||
bl AllocateTemp1024ByteBufferFromPool
|
||||
mov r5, r0
|
||||
mov r1, r6, lsl #0x10
|
||||
mov r0, r8
|
||||
mov r6, r1, asr #0x10
|
||||
bl EntityIsValid__023118B4
|
||||
cmp r0, #0
|
||||
beq _02313C50
|
||||
mov r0, #0
|
||||
mov r1, r8
|
||||
mov r2, r0
|
||||
ldr r7, [r8, #0xb4]
|
||||
bl SubstitutePlaceholderStringTags
|
||||
add r1, sp, #0x28
|
||||
ldr r1, [r1]
|
||||
mov r0, r8
|
||||
bl ov29_022E4F1C
|
||||
ldr r0, [sp, #0x28]
|
||||
cmp r0, #0
|
||||
beq _02313B90
|
||||
ldr r1, _02313C5C ; =0x00000DC9
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313BA8
|
||||
_02313B90:
|
||||
ldr r1, _02313C60 ; =0x00000DC8
|
||||
mov r0, r4
|
||||
bl CopyStringFromId
|
||||
mov r1, r4
|
||||
mov r0, #1
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313BA8:
|
||||
mov r0, r8
|
||||
mov r1, #0x61
|
||||
bl AbilityIsActiveVeneer
|
||||
cmp r0, #0
|
||||
movne r0, r6, lsl #0x11
|
||||
movne r6, r0, asr #0x10
|
||||
cmp r6, #1
|
||||
bne _02313BE4
|
||||
ldr r1, _02313C64 ; =0x00000DCD
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
b _02313BFC
|
||||
_02313BE4:
|
||||
ldr r1, _02313C68 ; =0x00000DCC
|
||||
mov r0, r5
|
||||
bl CopyStringFromId
|
||||
mov r1, r5
|
||||
mov r0, #2
|
||||
bl SetMessageLogPreprocessorArgsString
|
||||
_02313BFC:
|
||||
ldr r1, [sp, #0x28]
|
||||
add r0, r7, r1, lsl #1
|
||||
ldrsh r0, [r0, #0x28]
|
||||
add r4, r0, r6
|
||||
cmp r4, #0x14
|
||||
movge r4, #0x14
|
||||
cmp r4, r0
|
||||
beq _02313C38
|
||||
ldr r2, _02313C6C ; =0x00000D8E
|
||||
add r3, r7, r1, lsl #1
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
strh r4, [r3, #0x28]
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
b _02313C48
|
||||
_02313C38:
|
||||
ldr r2, _02313C70 ; =0x00000DD6
|
||||
mov r0, sb
|
||||
mov r1, r8
|
||||
bl LogMessageByIdWithPopupCheckUserTarget
|
||||
_02313C48:
|
||||
mov r0, r8
|
||||
bl UpdateStatusIconFlags
|
||||
_02313C50:
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr}
|
||||
add sp, sp, #0x10
|
||||
bx lr
|
||||
.align 2, 0
|
||||
#ifdef JAPAN
|
||||
#define BOOST_DEFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define BOOST_DEFENSIVE_STAT_OFFSET 0
|
||||
#endif
|
||||
_02313C5C: .word 0x00000DC9 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C60: .word 0x00000DC8 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C64: .word 0x00000DCD + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C68: .word 0x00000DCC + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C6C: .word 0x00000D8E + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
_02313C70: .word 0x00000DD6 + BOOST_DEFENSIVE_STAT_OFFSET
|
||||
arm_func_end BoostDefensiveStat
|
||||
|
|
@ -3441,4 +3441,19 @@ enum game_mode
|
|||
// Possibly more?
|
||||
};
|
||||
|
||||
enum FlagCalcOperation {
|
||||
CALC_SET = 0,
|
||||
CALC_SUB = 1,
|
||||
CALC_ADD = 2,
|
||||
CALC_MUL = 3,
|
||||
CALC_DIV = 4,
|
||||
CALC_MOD = 5,
|
||||
CALC_AND = 6,
|
||||
CALC_OR = 7,
|
||||
CALC_XOR = 8,
|
||||
CALC_SETBIT = 9,
|
||||
CALC_CLEARBIT = 10,
|
||||
CALC_RANDOM = 11,
|
||||
};
|
||||
|
||||
#endif //PMDSKY_ENUMS_H
|
||||
|
|
|
|||
11
include/overlay_29_02313814.h
Normal file
11
include/overlay_29_02313814.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef PMDSKY_OVERLAY_29_02313814_H
|
||||
#define PMDSKY_OVERLAY_29_02313814_H
|
||||
|
||||
struct StatIndex
|
||||
{
|
||||
int id;
|
||||
};
|
||||
|
||||
void LowerDefensiveStat(struct entity *pokemon, struct entity *target, struct StatIndex stat, s32 increment, bool8 checkProtected, bool8 logMsgProtected);
|
||||
|
||||
#endif //PMDSKY_OVERLAY_29_02313814_H
|
||||
|
|
@ -41,5 +41,6 @@ void LoadScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s3
|
|||
void LoadScriptVariableValueString(const enum script_var_id sv_id, u8* result, u8 num_bytes);
|
||||
void SaveScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s32 num_bytes);
|
||||
s32 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2);
|
||||
s32 FlagCalc(s32 param_1, s32 param_2, enum FlagCalcOperation operation);
|
||||
|
||||
#endif //PMDSKY_SCRIPTING_H
|
||||
|
|
|
|||
4
main.lsf
4
main.lsf
|
|
@ -81,7 +81,7 @@ Static main
|
|||
Object src/main_0204AFF8.o
|
||||
Object asm/main_0204B018.o
|
||||
Object src/scripting.o
|
||||
Object asm/main_0204BCAC.o
|
||||
Object asm/main_0204BD98.o
|
||||
Object src/main_0204C938.o
|
||||
Object asm/main_0204C94C.o
|
||||
Object src/dungeon_recruitment_3.o
|
||||
|
|
@ -543,6 +543,8 @@ Overlay OVY_29
|
|||
Object asm/overlay_29_023118D8.o
|
||||
Object src/overlay_29_02311BF8.o
|
||||
Object asm/overlay_29_02311C28.o
|
||||
Object src/overlay_29_02313814.o
|
||||
Object asm/overlay_29_0231399C.o
|
||||
Object src/move_orb_effects.o
|
||||
Object asm/overlay_29_02313CE4.o
|
||||
Object src/overlay_29_023147EC.o
|
||||
|
|
|
|||
76
src/overlay_29_02313814.c
Normal file
76
src/overlay_29_02313814.c
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#include "dungeon_pokemon_attributes.h"
|
||||
#include "dungeon_util_static.h"
|
||||
#include "overlay_29_023118B4.h"
|
||||
#include "overlay_29_02313814.h"
|
||||
|
||||
extern u8* AllocateTemp1024ByteBufferFromPool(void);
|
||||
extern void CopyStringFromId(u8* buf, u32 string_id);
|
||||
extern void SetMessageLogPreprocessorArgsString(u32 a, u8 *buf);
|
||||
extern bool8 IsProtectedFromStatDrops(struct entity *user, struct entity *target, bool8 logMsg);
|
||||
extern void SubstitutePlaceholderStringTags(int a, struct entity *entity, u32 param_3);
|
||||
extern void ov29_022E4DCC(struct entity *pokemon, struct StatIndex);
|
||||
extern void LogMessageByIdWithPopupCheckUserTarget(struct entity *user, struct entity *target, u32 message_id);
|
||||
extern void UpdateStatusIconFlags(struct entity *);
|
||||
|
||||
#ifdef JAPAN
|
||||
#define LOWER_DEFENSIVE_STAT_OFFSET -0x2C0
|
||||
#else
|
||||
#define LOWER_DEFENSIVE_STAT_OFFSET 0
|
||||
#endif // JAPAN
|
||||
|
||||
void LowerDefensiveStat(struct entity *pokemon, struct entity *target, struct StatIndex stat, s32 nStagesRaw, bool8 checkProtected, bool8 logMsgProtected)
|
||||
{
|
||||
struct monster *entityInfo;
|
||||
u8 *buffer1 = AllocateTemp1024ByteBufferFromPool();
|
||||
u8 *buffer2 = AllocateTemp1024ByteBufferFromPool();
|
||||
s16 nStages = nStagesRaw;
|
||||
s32 newStage;
|
||||
|
||||
if (!EntityIsValid__023118B4(target))
|
||||
return;
|
||||
|
||||
if (stat.id != 0) {
|
||||
CopyStringFromId(buffer1, 0xdc9 + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
SetMessageLogPreprocessorArgsString(1, buffer1);
|
||||
}
|
||||
else {
|
||||
CopyStringFromId(buffer1, 0xdc8 + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
SetMessageLogPreprocessorArgsString(1, buffer1);
|
||||
}
|
||||
|
||||
if (checkProtected) {
|
||||
if (IsProtectedFromStatDrops(pokemon, target, logMsgProtected))
|
||||
return;
|
||||
}
|
||||
|
||||
entityInfo = GetEntInfo(target);
|
||||
SubstitutePlaceholderStringTags(0,target,0);
|
||||
ov29_022E4DCC(target,stat);
|
||||
|
||||
if (AbilityIsActiveVeneer(target, ABILITY_SIMPLE))
|
||||
nStages *= 2;
|
||||
|
||||
if (nStages == 1) {
|
||||
CopyStringFromId(buffer2, 0xdcd + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
SetMessageLogPreprocessorArgsString(2, buffer2);
|
||||
}
|
||||
else {
|
||||
CopyStringFromId(buffer2, 0xdcc + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
SetMessageLogPreprocessorArgsString(2, buffer2);
|
||||
}
|
||||
|
||||
newStage = entityInfo->stat_modifiers.defensive_stages[stat.id];
|
||||
newStage -= nStages;
|
||||
if (newStage < 0) {
|
||||
newStage = 0;
|
||||
}
|
||||
|
||||
if (entityInfo->stat_modifiers.defensive_stages[stat.id] != newStage) {
|
||||
entityInfo->stat_modifiers.defensive_stages[stat.id] = newStage;
|
||||
LogMessageByIdWithPopupCheckUserTarget(pokemon,target,0xd90 + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
}
|
||||
else {
|
||||
LogMessageByIdWithPopupCheckUserTarget(pokemon,target,0xdd7 + LOWER_DEFENSIVE_STAT_OFFSET);
|
||||
}
|
||||
UpdateStatusIconFlags(target);
|
||||
}
|
||||
|
|
@ -1,4 +1,6 @@
|
|||
#include "debug.h"
|
||||
#include "enums.h"
|
||||
#include "main_0200224C.h"
|
||||
#include "scripting.h"
|
||||
|
||||
// Global script variable definitions
|
||||
|
|
@ -24,6 +26,9 @@ extern s32 sub_0204C928(s32 arg0);
|
|||
|
||||
const short LOCAL_SCRIPT_VAR_OFFSET = 0x400;
|
||||
|
||||
extern struct prog_pos_info EVENT_FLAG_PROG_POS_INFO;
|
||||
extern u8 EVENT_FLAG_EXPANSION_ERROR;
|
||||
|
||||
void LoadScriptVariableRaw(struct script_var_raw* sv_raw,
|
||||
union script_var_value sv_val_local[],
|
||||
const enum script_var_id sv_id) {
|
||||
|
|
@ -358,3 +363,39 @@ s32 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_
|
|||
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 FlagCalc(s32 param_1, s32 param_2, enum FlagCalcOperation operation)
|
||||
{
|
||||
switch (operation) {
|
||||
case CALC_SET:
|
||||
return param_2;
|
||||
case CALC_SUB:
|
||||
return param_1 - param_2;
|
||||
case CALC_ADD:
|
||||
return param_1 + param_2;
|
||||
case CALC_MUL:
|
||||
return param_1 * param_2;
|
||||
case CALC_DIV:
|
||||
return param_1 / param_2;
|
||||
case CALC_MOD:
|
||||
return param_1 % param_2;
|
||||
case CALC_AND:
|
||||
return param_1 & param_2;
|
||||
case CALC_OR:
|
||||
return param_1 | param_2;
|
||||
case CALC_XOR:
|
||||
return param_1 ^ param_2;
|
||||
case CALC_SETBIT:
|
||||
return (1 << param_2) | param_1;
|
||||
case CALC_CLEARBIT:
|
||||
return param_1 & ~(1 << param_2);
|
||||
case CALC_RANDOM:
|
||||
return RandInt(param_2);
|
||||
default:
|
||||
// EVENT_FLAG_PROG_POS_INFO contains a pointer to the filename event_flag.c
|
||||
// and a line number of 1001
|
||||
struct prog_pos_info prog_pos_info = EVENT_FLAG_PROG_POS_INFO;
|
||||
// EVENT_FLAG_EXPANSION_ERROR contains the string "event flag expansion error %d"
|
||||
Debug_FatalError(&prog_pos_info, &EVENT_FLAG_EXPANSION_ERROR, operation);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user