Merge branch 'main' into gravity_funcs

This commit is contained in:
AnonymousRandomPerson 2025-11-29 22:40:39 -06:00 committed by GitHub
commit 0e62b5f33f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
22 changed files with 116 additions and 155 deletions

View File

@ -463,7 +463,7 @@
.public sub_02039218
.public sub_0203931C
.public sub_0204B028
.public sub_0204C9F4
.public SetSpecialEpOpenOld
.public sub_0204CDB8
.public sub_0204E154
.public sub_0204E19C

View File

@ -1,4 +0,0 @@
#pragma once
.public LoadScriptVariableValueAtIndex
.public SaveScriptVariableValueAtIndex
.public ScriptVariablesEqual

View File

@ -481,8 +481,8 @@
.public sub_0204B018
.public IsStoryBeforePoint
.public GetDebugSpecialEpisodeNumber
.public sub_0204C978
.public sub_0204CA1C
.public SetSpecialEpisodeOpen
.public IsSpecialEpisodeBeaten
.public sub_0204D018
.public sub_0204E210
.public sub_0204E6FC

View File

@ -334,9 +334,9 @@
.public sub_0204AE60
.public GetDebugSpecialEpisodeNumber
.public SetDebugSpecialEpisodeNumber
.public sub_0204C9A0
.public sub_0204C9C8
.public sub_0204CA1C
.public IsSpecialEpisodeOpenMismatch
.public IsSpecialEpOpenOld
.public IsSpecialEpisodeBeaten
.public sub_0204DF54
.public sub_0204DFB0
.public sub_0204E02C

View File

@ -71,7 +71,7 @@
.public sub_0204A018
.public sub_0204A1CC
.public sub_0204AE60
.public sub_0204C978
.public SetSpecialEpisodeOpen
.public sub_0204E210
.public sub_02050974
.public sub_020509BC

View File

@ -63,6 +63,6 @@
.public sub_02032684
.public sub_02032984
.public sub_02033758
.public sub_0204CA1C
.public IsSpecialEpisodeBeaten
.public sub_02052060
.public UpdateWindow

View File

@ -638,7 +638,7 @@
.public IsStoryAtPoint
.public IsStoryAtOrAfterPoint
.public IsStoryAtOrAfterPointStrict
.public sub_0204CA48
.public SetSpecialEpisodeBeaten
.public sub_0204CB2C
.public sub_0204CDE8
.public sub_0204CE48

View File

@ -14613,7 +14613,7 @@ InitSpecialEpisodeHero: ; 0x020484E8
bl sub_0204CDB8
mov r0, r4
mov r1, #1
bl sub_0204C9F4
bl SetSpecialEpOpenOld
cmp r4, #4
addls pc, pc, r4, lsl #2
b _02048578

View File

@ -1,108 +0,0 @@
.include "asm/macros.inc"
.include "main_0204C94C.inc"
.text
arm_func_start IsSpecialEpisodeOpen
IsSpecialEpisodeOpen: ; 0x0204C94C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4b
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end IsSpecialEpisodeOpen
arm_func_start sub_0204C978
sub_0204C978: ; 0x0204C978
ldr ip, _0204C99C ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4b
bx ip
.align 2, 0
_0204C99C: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204C978
arm_func_start sub_0204C9A0
sub_0204C9A0: ; 0x0204C9A0
stmdb sp!, {r3, lr}
mov r0, #0
mov r1, #0x4b
mov r2, #0x4c
bl ScriptVariablesEqual
cmp r0, #0
moveq r0, #1
movne r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204C9A0
arm_func_start sub_0204C9C8
sub_0204C9C8: ; 0x0204C9C8
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4c
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204C9C8
arm_func_start sub_0204C9F4
sub_0204C9F4: ; 0x0204C9F4
ldr ip, _0204CA18 ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4c
bx ip
.align 2, 0
_0204CA18: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204C9F4
arm_func_start sub_0204CA1C
sub_0204CA1C: ; 0x0204CA1C
stmdb sp!, {r3, lr}
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
mov r0, #0
mov r1, #0x4d
bl LoadScriptVariableValueAtIndex
cmp r0, #0
movne r0, #1
moveq r0, #0
and r0, r0, #0xff
ldmia sp!, {r3, pc}
arm_func_end sub_0204CA1C
arm_func_start sub_0204CA48
sub_0204CA48: ; 0x0204CA48
ldr ip, _0204CA6C ; =SaveScriptVariableValueAtIndex
cmp r1, #0
movne r3, #1
mov r0, r0, lsl #0x10
mov r2, r0, lsr #0x10
moveq r3, #0
mov r0, #0
mov r1, #0x4d
bx ip
.align 2, 0
_0204CA6C: .word SaveScriptVariableValueAtIndex
arm_func_end sub_0204CA48

View File

@ -11467,7 +11467,7 @@ _02062694: ; jump table
b _020626AC ; case 5
_020626AC:
mov r0, #0
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
moveq r0, #0
beq _02062754
@ -18505,7 +18505,7 @@ _020680D0:
cmp r0, #5
bne _02068158
mov r0, #0
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
bne _0206812C
bl sub_020692B4
@ -20987,7 +20987,7 @@ _0206A1B0:
bl InitPreprocessorArgs
mov r0, #2
mov r1, #1
bl sub_0204C978
bl SetSpecialEpisodeOpen
add r0, sp, #0x7e
mov r1, #0x2a
bl MemZero

View File

@ -9890,7 +9890,7 @@ _023313FC:
ldr r0, [r0, #0x114]
cmp r0, #1
ble _02331480
bl sub_0204C9A0
bl IsSpecialEpisodeOpenMismatch
cmp r0, #0
beq _0233145C
cmp r4, #0
@ -11173,12 +11173,12 @@ ov01_02332580: ; 0x02332580
ldr r4, _02332634 ; =ov01_0233B678
beq _023325E4
mov r0, r7
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
ldrne r8, _02332638 ; =ov01_0233B6A4
bne _023325D8
mov r0, r7
bl sub_0204C9C8
bl IsSpecialEpOpenOld
cmp r0, #0
ldreq r8, _0233263C ; =ov01_0233B6B0
_023325D8:
@ -11766,7 +11766,7 @@ _02332D4C:
b _02332ED4
_02332D5C:
bl GetDebugSpecialEpisodeNumber
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
beq _02332DAC
ldr r0, _02332EDC ; =ov01_0233C184
@ -12398,7 +12398,7 @@ _023335C4:
mvn r5, #1
_023335D0:
mov r0, r7
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
beq _02333604
mov r0, r7

View File

@ -600,7 +600,7 @@ _0233D184:
_0233D1CC:
mov r0, #2
mov r1, #1
bl sub_0204C978
bl SetSpecialEpisodeOpen
#ifdef NORTH_AMERICA
mov r0, #0x1c
add r1, r0, #0x3780
@ -1977,7 +1977,7 @@ _0233E418:
ldr r2, [r0]
mov r0, #2
strb r1, [r2, #0x21c]
bl sub_0204C978
bl SetSpecialEpisodeOpen
ldr r1, _0233E930 ; =0x000037A5
mov r0, #0x1c
bl ov06_0233CDC8

View File

@ -58,7 +58,7 @@ _0233CAEC:
b _0233CB90
_0233CB38:
ldr r0, [r7]
bl sub_0204CA1C
bl IsSpecialEpisodeBeaten
cmp r0, #0
bne _0233CB8C
ldr r2, [sb]

View File

@ -3313,7 +3313,7 @@ _022DEF8C: ; 0x022DEF8C
blt _022DEFC0
sub r0, r4, #0x3e8
mov r1, #1
bl sub_0204CA48
bl SetSpecialEpisodeBeaten
ldr r0, _022DFE08 ; =ov11_02316B0C
sub r1, r4, #0x3e8
ldrb r0, [r0, r1]

View File

@ -1,7 +0,0 @@
#ifndef PMDSKY_MAIN_0204C938_H
#define PMDSKY_MAIN_0204C938_H
// Gets the special episode type from the EXECUTE_SPECIAL_EPISODE_TYPE script variable.
s32 GetExecuteSpecialEpisodeType();
#endif //PMDSKY_MAIN_0204C938_H

View File

@ -38,7 +38,7 @@ s32 LoadScriptVariableValueSum(union script_var_value sv_local[], const enum scr
void LoadScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s32 num_bytes);
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);
bool8 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2);
s32 CalcScriptVariables(s32 param_1, s32 param_2, enum script_calc_operation operation);
bool8 CompareScriptVariables(s32 param_1, s32 param_2, enum compare_operation operation);
s32 CalcScriptVariablesVeneer(s32 param_1, s32 param_2, enum script_calc_operation operation);

View File

@ -5,5 +5,14 @@ s32 GetSpecialEpisodeType();
void SetSpecialEpisodeType(u32 type);
s32 GetDebugSpecialEpisodeNumber();
void SetDebugSpecialEpisodeNumber(s32 num);
// Gets the special episode type from the EXECUTE_SPECIAL_EPISODE_TYPE script variable.
s32 GetExecuteSpecialEpisodeType();
bool8 IsSpecialEpisodeOpen(u32 idx);
void SetSpecialEpisodeOpen(u32 idx, u32 episode_open);
bool8 IsSpecialEpisodeOpenMismatch();
bool8 IsSpecialEpOpenOld(u32 idx);
void SetSpecialEpOpenOld(u32 idx, u32 val);
bool8 IsSpecialEpisodeBeaten(u32 idx);
void SetSpecialEpisodeBeaten(u32 idx, u32 special_ep_beaten);
#endif //PMDSKY_SCRIPTING_H

View File

@ -84,8 +84,6 @@ Static main
Object asm/main_rodata_0209CECC.o
Object src/story_progress.o
Object src/special_episode.o
Object src/main_0204C938.o
Object asm/main_0204C94C.o
Object src/dungeon_recruitment_3.o
Object asm/main_0204CA94.o
Object src/main_0204CB94.o

View File

@ -1,9 +1,9 @@
#include "main_0200EDC0.h"
#include "item.h"
#include "main_0204C938.h"
#include "main_0204CB94.h"
#include "main_020517D4.h"
#include "script_variable.h"
#include "special_episode.h"
extern struct bag_items *BAG_ITEMS_PTR_MIRROR;

View File

@ -1,7 +0,0 @@
#include "main_0204C938.h"
#include "script_variable.h"
s32 GetExecuteSpecialEpisodeType()
{
return LoadScriptVariableValue(0, VAR_EXECUTE_SPECIAL_EPISODE_TYPE);
}

View File

@ -360,7 +360,7 @@ void SaveScriptVariableValueBytes(const enum script_var_id sv_id, u8* result, s3
}
}
s32 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2)
bool8 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_var_id sv_id_1, enum script_var_id sv_id_2)
{
struct script_var_raw script_var_raw_1, script_var_raw_2;
@ -372,11 +372,11 @@ s32 ScriptVariablesEqual(union script_var_value sv_val_ptr_local[], enum script_
for(int idx = 0; idx < n_values; idx++) {
if (LoadScriptVariableValueAtIndex(sv_val_ptr_local, sv_id_1, idx) !=
LoadScriptVariableValueAtIndex(sv_val_ptr_local, sv_id_2, idx)) {
return 0;
return FALSE;
}
}
return 1;
return TRUE;
}
s32 CalcScriptVariables(s32 param_1, s32 param_2, enum script_calc_operation operation)

View File

@ -23,3 +23,83 @@ void SetDebugSpecialEpisodeNumber(s32 num)
{
DEBUG_SPECIAL_EPISODE_NUMBER = num;
}
s32 GetExecuteSpecialEpisodeType()
{
return LoadScriptVariableValue(0, VAR_EXECUTE_SPECIAL_EPISODE_TYPE);
}
bool8 IsSpecialEpisodeOpen(u32 idx)
{
s32 val = LoadScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_OPEN, idx);
return val != 0;
}
void SetSpecialEpisodeOpen(u32 idx, u32 episode_open)
{
s32 val;
if(episode_open != FALSE) {
val = TRUE;
} else {
val = FALSE;
}
SaveScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_OPEN, idx, val);
}
bool8 IsSpecialEpisodeOpenMismatch()
{
u32 ret;
bool8 result = ScriptVariablesEqual(0, VAR_SPECIAL_EPISODE_OPEN, VAR_SPECIAL_EPISODE_OPEN_OLD);
if(result == FALSE)
{
ret = TRUE;
} else {
ret = FALSE;
}
return ret;
}
bool8 IsSpecialEpOpenOld(u32 idx)
{
s32 val = LoadScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_OPEN_OLD, idx);
if(val == 0) {
return FALSE;
} else {
return TRUE;
}
}
void SetSpecialEpOpenOld(u32 idx, u32 episode_open)
{
s32 new_val;
if(episode_open == 0) {
new_val = 0;
} else {
new_val = 1;
}
SaveScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_OPEN_OLD, idx, new_val);
}
bool8 IsSpecialEpisodeBeaten(u32 idx)
{
s32 val = LoadScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_CONQUEST, idx);
if(val == 0) {
return FALSE;
} else {
return TRUE;
}
}
void SetSpecialEpisodeBeaten(u32 idx, u32 special_ep_beaten)
{
s32 new_val;
if(special_ep_beaten == 0)
{
new_val = 0;
} else {
new_val = 1;
}
SaveScriptVariableValueAtIndex(0, VAR_SPECIAL_EPISODE_CONQUEST, idx, new_val);
}