mirror of
https://github.com/pret/pmd-sky.git
synced 2026-03-21 17:25:15 -05:00
Merge pull request #215 from slaw-22/Scripting6
Some checks are pending
build / build (push) Waiting to run
Some checks are pending
build / build (push) Waiting to run
Decomp more script variable functions
This commit is contained in:
commit
69ea6f2808
|
|
@ -1,13 +0,0 @@
|
|||
#pragma once
|
||||
.public DEBUG_SPECIAL_EPISODE_NUMBER
|
||||
.public Debug_Print
|
||||
.public EventFlagBackup
|
||||
.public LoadScriptVariableRaw
|
||||
.public LoadScriptVariableValue
|
||||
.public LoadScriptVariableValueAtIndex
|
||||
.public MemcpySimple
|
||||
.public SCRIPT_VARS_VALUES
|
||||
.public SaveScriptVariableValue
|
||||
.public SaveScriptVariableValueAtIndex
|
||||
.public ZinitScriptVariable
|
||||
.public SCENARIO_CALC_DEBUG_MSG
|
||||
|
|
@ -479,8 +479,8 @@
|
|||
.public sub_0204AB18
|
||||
.public sub_0204AF98
|
||||
.public sub_0204B018
|
||||
.public sub_0204C6C8
|
||||
.public sub_0204C918
|
||||
.public IsStoryBeforePoint
|
||||
.public GetDebugSpecialEpisodeNumber
|
||||
.public sub_0204C978
|
||||
.public sub_0204CA1C
|
||||
.public sub_0204D018
|
||||
|
|
|
|||
|
|
@ -332,8 +332,8 @@
|
|||
.public sub_0204a1cc
|
||||
.public sub_0204A1CC
|
||||
.public sub_0204AE60
|
||||
.public sub_0204C918
|
||||
.public sub_0204C928
|
||||
.public GetDebugSpecialEpisodeNumber
|
||||
.public SetDebugSpecialEpisodeNumber
|
||||
.public sub_0204C9A0
|
||||
.public sub_0204C9C8
|
||||
.public sub_0204CA1C
|
||||
|
|
|
|||
|
|
@ -633,11 +633,11 @@
|
|||
.public CompareScriptVarWithParam
|
||||
.public LoadAndCompareScriptVars
|
||||
.public LoadScriptVarValuePair
|
||||
.public sub_0204C6C8
|
||||
.public sub_0204C734
|
||||
.public sub_0204C7AC
|
||||
.public sub_0204C808
|
||||
.public sub_0204C880
|
||||
.public IsStoryBeforePoint
|
||||
.public IsStoryBeforeOrAtPoint
|
||||
.public IsStoryAtPoint
|
||||
.public IsStoryAtOrAfterPoint
|
||||
.public IsStoryAtOrAfterPointStrict
|
||||
.public sub_0204CA48
|
||||
.public sub_0204CB2C
|
||||
.public sub_0204CDE8
|
||||
|
|
|
|||
|
|
@ -1,207 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "main_0204C408.inc"
|
||||
|
||||
.text
|
||||
|
||||
arm_func_start sub_0204C6C8
|
||||
sub_0204C6C8: ; 0x0204C6C8
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
mov r4, r0
|
||||
mov r1, r7
|
||||
mov r0, #0
|
||||
mov r2, #1
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
cmp r4, #0x35
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r4, r6
|
||||
movlt r0, #1
|
||||
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
bne _0204C72C
|
||||
cmp r5, #0
|
||||
blt _0204C72C
|
||||
cmp r0, r5
|
||||
movlt r0, #1
|
||||
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C72C:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0204C6C8
|
||||
|
||||
arm_func_start sub_0204C734
|
||||
sub_0204C734: ; 0x0204C734
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
mov r4, r0
|
||||
mov r1, r7
|
||||
mov r0, #0
|
||||
mov r2, #1
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
cmp r4, #0x35
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r4, r6
|
||||
movlt r0, #1
|
||||
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
bne _0204C7A4
|
||||
cmp r5, #0
|
||||
blt _0204C79C
|
||||
cmp r0, r5
|
||||
bgt _0204C7A4
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C79C:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C7A4:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0204C734
|
||||
|
||||
arm_func_start sub_0204C7AC
|
||||
sub_0204C7AC: ; 0x0204C7AC
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
mov r4, r0
|
||||
mov r1, r7
|
||||
mov r0, #0
|
||||
mov r2, #1
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
cmp r4, r6
|
||||
bne _0204C800
|
||||
cmp r5, #0
|
||||
movlt r0, #1
|
||||
ldmltia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r0, r5
|
||||
moveq r0, #1
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C800:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0204C7AC
|
||||
|
||||
arm_func_start sub_0204C808
|
||||
sub_0204C808: ; 0x0204C808
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
mov r4, r0
|
||||
mov r1, r7
|
||||
mov r0, #0
|
||||
mov r2, #1
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
cmp r4, #0x35
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r4, r6
|
||||
movgt r0, #1
|
||||
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
bne _0204C878
|
||||
cmp r5, #0
|
||||
blt _0204C870
|
||||
cmp r0, r5
|
||||
blt _0204C878
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C870:
|
||||
mov r0, #1
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C878:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0204C808
|
||||
|
||||
arm_func_start sub_0204C880
|
||||
sub_0204C880: ; 0x0204C880
|
||||
stmdb sp!, {r3, r4, r5, r6, r7, lr}
|
||||
mov r7, r0
|
||||
mov r6, r1
|
||||
mov r0, #0
|
||||
mov r5, r2
|
||||
mov r1, r7
|
||||
mov r2, r0
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
mov r4, r0
|
||||
mov r1, r7
|
||||
mov r0, #0
|
||||
mov r2, #1
|
||||
bl LoadScriptVariableValueAtIndex
|
||||
cmp r4, #0x35
|
||||
moveq r0, #0
|
||||
ldmeqia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
cmp r4, r6
|
||||
movgt r0, #1
|
||||
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
bne _0204C8E4
|
||||
cmp r5, #0
|
||||
blt _0204C8E4
|
||||
cmp r0, r5
|
||||
movgt r0, #1
|
||||
ldmgtia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
_0204C8E4:
|
||||
mov r0, #0
|
||||
ldmia sp!, {r3, r4, r5, r6, r7, pc}
|
||||
arm_func_end sub_0204C880
|
||||
|
||||
arm_func_start GetSpecialEpisodeType
|
||||
GetSpecialEpisodeType: ; 0x0204C8EC
|
||||
ldr ip, _0204C8FC ; =LoadScriptVariableValue
|
||||
mov r0, #0
|
||||
mov r1, #0x4a
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0204C8FC: .word LoadScriptVariableValue
|
||||
arm_func_end GetSpecialEpisodeType
|
||||
|
||||
arm_func_start SetSpecialEpisodeType
|
||||
SetSpecialEpisodeType: ; 0x0204C900
|
||||
ldr ip, _0204C914 ; =SaveScriptVariableValue
|
||||
mov r2, r0
|
||||
mov r0, #0
|
||||
mov r1, #0x4a
|
||||
bx ip
|
||||
.align 2, 0
|
||||
_0204C914: .word SaveScriptVariableValue
|
||||
arm_func_end SetSpecialEpisodeType
|
||||
|
||||
arm_func_start sub_0204C918
|
||||
sub_0204C918: ; 0x0204C918
|
||||
ldr r0, _0204C924 ; =DEBUG_SPECIAL_EPISODE_NUMBER
|
||||
ldr r0, [r0]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0204C924: .word DEBUG_SPECIAL_EPISODE_NUMBER
|
||||
arm_func_end sub_0204C918
|
||||
|
||||
arm_func_start sub_0204C928
|
||||
sub_0204C928: ; 0x0204C928
|
||||
ldr r1, _0204C934 ; =DEBUG_SPECIAL_EPISODE_NUMBER
|
||||
str r0, [r1]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_0204C934: .word DEBUG_SPECIAL_EPISODE_NUMBER
|
||||
arm_func_end sub_0204C928
|
||||
|
|
@ -12403,21 +12403,21 @@ sub_02063240: ; 0x02063240
|
|||
mov r0, #3
|
||||
mov r1, #0xc
|
||||
mov r2, #0
|
||||
bl sub_0204C6C8
|
||||
bl IsStoryBeforePoint
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
strneh r0, [r6, #0xa]
|
||||
mov r0, #3
|
||||
mov r1, #6
|
||||
mov r2, #0
|
||||
bl sub_0204C6C8
|
||||
bl IsStoryBeforePoint
|
||||
cmp r0, #0
|
||||
movne r0, #0
|
||||
strneh r0, [r6, #0xc]
|
||||
mov r0, #3
|
||||
mov r1, #8
|
||||
mov r2, #0
|
||||
bl sub_0204C6C8
|
||||
bl IsStoryBeforePoint
|
||||
cmp r0, #0
|
||||
bne _020632B8
|
||||
ldrb r1, [r4, #1]
|
||||
|
|
@ -16146,7 +16146,7 @@ _0206617C:
|
|||
bl sub_0204872C
|
||||
b _02065F20
|
||||
_020661B0:
|
||||
bl sub_0204C918
|
||||
bl GetDebugSpecialEpisodeNumber
|
||||
bl SetSpecialEpisodeType
|
||||
mov r0, #3
|
||||
bl sub_0204B018
|
||||
|
|
|
|||
|
|
@ -9727,7 +9727,7 @@ _02331180:
|
|||
ldr r0, [r0, #8]
|
||||
cmp r0, #0x20
|
||||
bne _023311EC
|
||||
bl sub_0204C918
|
||||
bl GetDebugSpecialEpisodeNumber
|
||||
b _023311F0
|
||||
_023311EC:
|
||||
bl GetSpecialEpisodeType
|
||||
|
|
@ -10815,7 +10815,7 @@ _02332088:
|
|||
b _023324F4
|
||||
_02332104:
|
||||
mov r0, r1
|
||||
bl sub_0204C928
|
||||
bl SetDebugSpecialEpisodeNumber
|
||||
ldr r0, _02332508 ; =ov01_0233C178
|
||||
mov r1, #4
|
||||
str r1, [r0, #4]
|
||||
|
|
@ -11437,7 +11437,7 @@ _02332900:
|
|||
_02332910:
|
||||
bl GetSpecialEpisodeType
|
||||
mov r5, r0
|
||||
bl sub_0204C918
|
||||
bl GetDebugSpecialEpisodeNumber
|
||||
mvn r1, #0
|
||||
cmp r5, r1
|
||||
beq _02332950
|
||||
|
|
@ -11765,7 +11765,7 @@ _02332D4C:
|
|||
mov r0, #4
|
||||
b _02332ED4
|
||||
_02332D5C:
|
||||
bl sub_0204C918
|
||||
bl GetDebugSpecialEpisodeNumber
|
||||
bl sub_0204CA1C
|
||||
cmp r0, #0
|
||||
beq _02332DAC
|
||||
|
|
|
|||
|
|
@ -3439,7 +3439,7 @@ _022DF154:
|
|||
mov r2, r0
|
||||
mov r0, r1, asr #0x10
|
||||
mov r1, r5
|
||||
bl sub_0204C6C8
|
||||
bl IsStoryBeforePoint
|
||||
cmp r0, #0
|
||||
ldrneh r0, [r6, #6]
|
||||
ldrne r1, [r4, #0x14]
|
||||
|
|
@ -3459,7 +3459,7 @@ _022DF1A0:
|
|||
mov r2, r0
|
||||
mov r0, r1, asr #0x10
|
||||
mov r1, r5
|
||||
bl sub_0204C734
|
||||
bl IsStoryBeforeOrAtPoint
|
||||
cmp r0, #0
|
||||
ldrneh r0, [r6, #6]
|
||||
ldrne r1, [r4, #0x14]
|
||||
|
|
@ -3479,7 +3479,7 @@ _022DF1EC:
|
|||
mov r2, r0
|
||||
mov r0, r1, asr #0x10
|
||||
mov r1, r5
|
||||
bl sub_0204C7AC
|
||||
bl IsStoryAtPoint
|
||||
cmp r0, #0
|
||||
ldrneh r0, [r6, #6]
|
||||
ldrne r1, [r4, #0x14]
|
||||
|
|
@ -3499,7 +3499,7 @@ _022DF238:
|
|||
mov r2, r0
|
||||
mov r0, r1, asr #0x10
|
||||
mov r1, r5
|
||||
bl sub_0204C808
|
||||
bl IsStoryAtOrAfterPoint
|
||||
cmp r0, #0
|
||||
ldrneh r0, [r6, #6]
|
||||
ldrne r1, [r4, #0x14]
|
||||
|
|
@ -3519,7 +3519,7 @@ _022DF284:
|
|||
mov r2, r0
|
||||
mov r0, r1, asr #0x10
|
||||
mov r1, r5
|
||||
bl sub_0204C880
|
||||
bl IsStoryAtOrAfterPointStrict
|
||||
cmp r0, #0
|
||||
ldrneh r0, [r6, #6]
|
||||
ldrne r1, [r4, #0x14]
|
||||
|
|
|
|||
|
|
@ -53,6 +53,5 @@ bool8 DumpScriptVariableValues(u8* dest);
|
|||
bool8 RestoreScriptVariableValues(u8* src);
|
||||
void InitProgress();
|
||||
void LoadScriptVarValuePair(enum script_var_id script_var_id, s32* val_1, s32* val_2);
|
||||
void UpdateProgress(enum script_var_id script_var_id, s32 progress, s32 sub_progress);
|
||||
|
||||
#endif //PMDSKY_SCRIPTING_H
|
||||
|
|
|
|||
9
include/special_episode.h
Normal file
9
include/special_episode.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef PMDSKY_SPECIAL_EPISODE_H
|
||||
#define PMDSKY_SPECIAL_EPISODE_H
|
||||
|
||||
s32 GetSpecialEpisodeType();
|
||||
void SetSpecialEpisodeType(u32 type);
|
||||
s32 GetDebugSpecialEpisodeNumber();
|
||||
void SetDebugSpecialEpisodeNumber(s32 num);
|
||||
|
||||
#endif //PMDSKY_SCRIPTING_H
|
||||
11
include/story_progress.h
Normal file
11
include/story_progress.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef PMDSKY_STORY_PROGRESS_H
|
||||
#define PMDSKY_STORY_PROGRESS_H
|
||||
|
||||
void UpdateProgress(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
bool8 IsStoryBeforePoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
bool8 IsStoryBeforeOrAtPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
s32 IsStoryAtPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
s32 IsStoryAtOrAfterPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
s32 IsStoryAtOrAfterPointStrict(enum script_var_id script_var_id, s32 chapter, s32 sub_section);
|
||||
|
||||
#endif //PMDSKY_STORY_PROGRESS_H
|
||||
3
main.lsf
3
main.lsf
|
|
@ -82,7 +82,8 @@ Static main
|
|||
Object asm/main_0204B018.o
|
||||
Object src/script_variable.o
|
||||
Object asm/main_rodata_0209CECC.o
|
||||
Object asm/main_0204C6C8.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
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#include "enums.h"
|
||||
#include "main_0200224C.h"
|
||||
#include "script_variable.h"
|
||||
#include "special_episode.h"
|
||||
#include "story_progress.h"
|
||||
|
||||
#define LOCAL_SCRIPT_VAR_OFFSET 0x400
|
||||
|
||||
|
|
@ -24,21 +26,19 @@ const struct prog_pos_info EVENT_FLAG_PROG_POS_INFO_LINE_1044 = {
|
|||
(u8*) EVENT_FLAG_FILE_NAME,
|
||||
1044
|
||||
};
|
||||
extern const u8 SCENARIO_CALC_DEBUG_MSG;
|
||||
|
||||
extern s32 GetPartyMembers(s32 param1);
|
||||
extern s32 GetMoneyCarried();
|
||||
extern s32 GetMoneyStored();
|
||||
extern s32 GetLanguageType();
|
||||
extern enum game_mode GetGameMode();
|
||||
extern s32 sub_0204C918();
|
||||
extern s32 GetDebugSpecialEpisodeNumber();
|
||||
extern s32 GetSpecialEpisodeType();
|
||||
extern s32 GetNotifyNote();
|
||||
extern s32 AddMoneyCarried(s32 arg0);
|
||||
extern s32 SetMoneyCarried(s32 arg0);
|
||||
extern s32 SetMoneyStored(s32 arg0);
|
||||
extern s32 SetNotifyNote(s32 arg0);
|
||||
extern s32 sub_0204C928(s32 arg0);
|
||||
extern void sub_0204CBE8();
|
||||
extern void ScenarioFlagBackup();
|
||||
void MemcpySimple(u8* dest, u8* src, s32 n);
|
||||
|
|
@ -103,7 +103,7 @@ s32 LoadScriptVariableValue(union script_var_value sv_local[], enum script_var_i
|
|||
case VAR_EXECUTE_SPECIAL_EPISODE_TYPE:
|
||||
switch(GetGameMode()) {
|
||||
case GAME_MODE_1:
|
||||
return sub_0204C918();
|
||||
return GetDebugSpecialEpisodeNumber();
|
||||
case GAME_MODE_SPECIAL_EPISODE:
|
||||
return GetSpecialEpisodeType();
|
||||
default:
|
||||
|
|
@ -160,7 +160,7 @@ s32 LoadScriptVariableValueAtIndex(union script_var_value sv_local[], enum scrip
|
|||
case VAR_EXECUTE_SPECIAL_EPISODE_TYPE:
|
||||
switch (GetGameMode()) {
|
||||
case GAME_MODE_1:
|
||||
return sub_0204C918();
|
||||
return GetDebugSpecialEpisodeNumber();
|
||||
case GAME_MODE_SPECIAL_EPISODE:
|
||||
return GetSpecialEpisodeType();
|
||||
default:
|
||||
|
|
@ -221,7 +221,7 @@ void SaveScriptVariableValue(union script_var_value sv_locals[], const enum scri
|
|||
return;
|
||||
case VAR_EXECUTE_SPECIAL_EPISODE_TYPE:
|
||||
if (GetGameMode() == GAME_MODE_1) {
|
||||
sub_0204C928(new_val);
|
||||
SetDebugSpecialEpisodeNumber(new_val);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
|
@ -291,7 +291,7 @@ void SaveScriptVariableValueAtIndex(union script_var_value sv_locals[], const en
|
|||
return;
|
||||
case VAR_EXECUTE_SPECIAL_EPISODE_TYPE:
|
||||
if (GetGameMode() == GAME_MODE_1) {
|
||||
sub_0204C928(new_val);
|
||||
SetDebugSpecialEpisodeNumber(new_val);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
|
@ -615,22 +615,3 @@ void LoadScriptVarValuePair(enum script_var_id script_var_id, s32* val_1, s32* v
|
|||
*val_1 = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
*val_2 = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
}
|
||||
|
||||
void UpdateProgress(enum script_var_id script_var_id, s32 progress, s32 sub_progress)
|
||||
{
|
||||
s32 old_progress = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 old_sub_prog = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
Debug_Print(9, &SCENARIO_CALC_DEBUG_MSG, script_var_id, old_progress, old_sub_prog,
|
||||
progress, sub_progress);
|
||||
|
||||
// VAR_SCENARIO_MAIN stores maingame story progression
|
||||
if (script_var_id == VAR_SCENARIO_MAIN) {
|
||||
if ((progress!= old_progress) || (sub_progress != old_sub_prog)) {
|
||||
// Reset Job Requests cleared in a single day when the maingame story progresses.
|
||||
SaveScriptVariableValue(0, VAR_REQUEST_CLEAR_COUNT, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SaveScriptVariableValueAtIndex(0, script_var_id, 0, progress);
|
||||
SaveScriptVariableValueAtIndex(0, script_var_id, 1, sub_progress);
|
||||
}
|
||||
|
|
|
|||
25
src/special_episode.c
Normal file
25
src/special_episode.c
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#include "enums.h"
|
||||
#include "script_variable.h"
|
||||
#include "special_episode.h"
|
||||
|
||||
extern s32 DEBUG_SPECIAL_EPISODE_NUMBER;
|
||||
|
||||
s32 GetSpecialEpisodeType()
|
||||
{
|
||||
LoadScriptVariableValue(0, VAR_SPECIAL_EPISODE_TYPE);
|
||||
}
|
||||
|
||||
void SetSpecialEpisodeType(u32 type)
|
||||
{
|
||||
SaveScriptVariableValue(0, VAR_SPECIAL_EPISODE_TYPE, type);
|
||||
}
|
||||
|
||||
s32 GetDebugSpecialEpisodeNumber()
|
||||
{
|
||||
return DEBUG_SPECIAL_EPISODE_NUMBER;
|
||||
}
|
||||
|
||||
void SetDebugSpecialEpisodeNumber(s32 num)
|
||||
{
|
||||
DEBUG_SPECIAL_EPISODE_NUMBER = num;
|
||||
}
|
||||
129
src/story_progress.c
Normal file
129
src/story_progress.c
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
|
||||
#include "debug.h"
|
||||
#include "enums.h"
|
||||
#include "script_variable.h"
|
||||
#include "story_progress.h"
|
||||
|
||||
extern const u8 SCENARIO_CALC_DEBUG_MSG;
|
||||
|
||||
void UpdateProgress(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 old_progress = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 old_sub_prog = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
Debug_Print(9, &SCENARIO_CALC_DEBUG_MSG, script_var_id, old_progress, old_sub_prog,
|
||||
chapter, sub_section);
|
||||
|
||||
// VAR_SCENARIO_MAIN stores maingame story progression
|
||||
if (script_var_id == VAR_SCENARIO_MAIN) {
|
||||
if ((chapter!= old_progress) || (sub_section != old_sub_prog)) {
|
||||
// Reset Job Requests cleared in a single day when the maingame story progresses.
|
||||
SaveScriptVariableValue(0, VAR_REQUEST_CLEAR_COUNT, 0);
|
||||
}
|
||||
}
|
||||
|
||||
SaveScriptVariableValueAtIndex(0, script_var_id, 0, chapter);
|
||||
SaveScriptVariableValueAtIndex(0, script_var_id, 1, sub_section);
|
||||
}
|
||||
|
||||
bool8 IsStoryBeforePoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 cur_chapter = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 cur_sub_sec = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
|
||||
if (cur_chapter == 0x35) {
|
||||
return FALSE;
|
||||
}
|
||||
if (cur_chapter < chapter) {
|
||||
return TRUE;
|
||||
}
|
||||
if ((cur_chapter == chapter) && (sub_section >= 0) && (cur_sub_sec < sub_section)) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 IsStoryBeforeOrAtPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 cur_chapter = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 cur_sub_sec = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
|
||||
if (cur_chapter == 0x35) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (cur_chapter < chapter) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (cur_chapter == chapter) {
|
||||
if (sub_section >= 0) {
|
||||
if (cur_sub_sec <= sub_section) {
|
||||
return TRUE;
|
||||
}
|
||||
} else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 IsStoryAtPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 cur_chapter = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 cur_sub_sec = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
|
||||
if (cur_chapter == chapter) {
|
||||
if (sub_section < 0) {
|
||||
return TRUE;
|
||||
}
|
||||
if (cur_sub_sec == sub_section) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 IsStoryAtOrAfterPoint(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 cur_sub_sec;
|
||||
s32 cur_chapter;
|
||||
|
||||
cur_chapter = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
cur_sub_sec = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
|
||||
if (cur_chapter == 0x35) {
|
||||
return FALSE;
|
||||
}
|
||||
if (cur_chapter > chapter) {
|
||||
return TRUE;
|
||||
}
|
||||
if (cur_chapter == chapter) {
|
||||
if (sub_section >= 0) {
|
||||
if (cur_sub_sec >= sub_section) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
} else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
s32 IsStoryAtOrAfterPointStrict(enum script_var_id script_var_id, s32 chapter, s32 sub_section)
|
||||
{
|
||||
s32 cur_chapter = LoadScriptVariableValueAtIndex(0, script_var_id, 0);
|
||||
s32 cur_sub_sec = LoadScriptVariableValueAtIndex(0, script_var_id, 1);
|
||||
|
||||
if (cur_chapter == 0x35) {
|
||||
return FALSE;
|
||||
}
|
||||
if (cur_chapter > chapter) {
|
||||
return TRUE;
|
||||
}
|
||||
if ((cur_chapter == chapter) && (sub_section >= 0) && (cur_sub_sec > sub_section)) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user