Paper Mario DX
Paper Mario (N64) modding
 
Loading...
Searching...
No Matches
script_list.c
Go to the documentation of this file.
1#include "common.h"
2#include "hud_element.h"
3#include "dx/config.h"
4#include "dx/debug_menu.h"
5
9
10// script_list
20
21// evt
23
24// map_api
27
28// model_api
32
33// npc_api
36
37// msg_api
43
44// player_api
50
51// audio_api
55
56// item_api
58
59// why is this at the end? com section vs bss?
62
65
67
70
72
73void sort_scripts(void) {
76 s32 tempID;
79 s32 i;
80 s32 j;
81 s32 x;
85
86 for (i = 0; i < MAX_SCRIPTS; i++) {
87 curScript = (*gCurrentScriptListPtr)[i];
88 if (curScript != NULL) {
89 if (curScript->stateFlags != 0) {
93 }
94 }
95 }
96
98 for (i = 0; i < (x = numValidScripts - 1); i++) {
102 for (j = i + 1; j < numValidScripts; j++) {
105 x = i;
106 if ((**currentScriptListPtr)[temp_a1]->priority > (**currentScriptListPtr)[temp_a0]->priority) {
109 tempID = scriptIdList[i];
112 }
113 }
114 }
115}
116
118 Bytecode* curLine;
119 s32 type;
120 s32 label;
121 s32 numArgs;
122 s32 i;
123 s32 j;
124
125 for (i = 0; i < ARRAY_COUNT(script->labelIndices); i++) {
126 script->labelIndices[i] = -1;
127 script->labelPositions[i] = 0;
128 }
129
130 j = 0;
131 curLine = script->ptrNextLine;
132 while (j < ARRAY_COUNT(script->labelIndices)) {
133 type = *curLine++;
134 numArgs = *curLine++;
135 label = *curLine;
136 curLine += numArgs;
137
138 if (type == 1) {
139 return;
140 }
141
142 if (type == 3) {
143 script->labelIndices[j] = label;
144 script->labelPositions[j] = curLine;
145 j++;
146 }
147 }
148 PANIC();
149}
150
152 s32 i;
153
158 } else {
162 }
163
164 for (i = 0; i < MAX_SCRIPTS; i++) {
165 (*gCurrentScriptListPtr)[i] = NULL;
166 }
167
168 gNumScripts = 0;
171
172 for (i = 0; i < MAX_MAPVARS; i++) {
173 gMapVars[i] = 0;
174 }
175
176 for (i = 0; i < MAX_MAPFLAGS; i++) {
177 gMapFlags[i] = 0;
178 }
179
180 #if DX_DEBUG_MENU
182 #endif
183
186}
187
205
206// enforces current gTimeFreezeMode on newly created script
208 switch (gTimeFreezeMode) {
209 default:
210 case TIME_FREEZE_NONE:
211 case TIME_FREEZE_EXIT:
212 return;
215 return;
216 case TIME_FREEZE_FULL:
219 return;
220 }
221}
222
224 Evt* newScript;
227 s32 i;
228
229 for (i = 0; i < MAX_SCRIPTS; i++) {
230 if ((*gCurrentScriptListPtr)[i] == NULL) {
231 break;
232 }
233 }
234
235 ASSERT(i < MAX_SCRIPTS);
236 curScriptIndex = i;
237
238 (*gCurrentScriptListPtr)[curScriptIndex] = newScript = heap_malloc(sizeof(*newScript));
239 gNumScripts++;
241
242 newScript->stateFlags = flags | EVT_FLAG_ACTIVE;
243 newScript->curOpcode = EVT_OP_INTERNAL_FETCH;
244 newScript->priority = priority;
246 newScript->ptrNextLine = (Bytecode*)source;
247 newScript->ptrFirstLine = (Bytecode*)source;
248 newScript->ptrCurLine = (Bytecode*)source;
249 newScript->userData = NULL;
250 newScript->blockingParent = NULL;
251 newScript->childScript = NULL;
252 newScript->parentScript = NULL;
253 newScript->owner1.actorID = -1;
254 newScript->owner2.npcID = -1;
255 newScript->loopDepth = -1;
256 newScript->switchDepth = -1;
257 newScript->groupFlags = EVT_GROUP_NOT_BATTLE;
258 newScript->ptrSavedPos = NULL;
259 newScript->frameCounter = 0.0f;
260 newScript->unk_158 = 0;
261 newScript->timeScale = GlobalTimeRate;
262 newScript->debugPaused = FALSE;
263
264 scriptListCount = 0;
265
266 for (i = 0; i < ARRAY_COUNT(newScript->varTable); i++) {
267 newScript->varTable[i] = 0;
268 }
269
270 for (i = 0; i < ARRAY_COUNT(newScript->varFlags); i++) {
271 newScript->varFlags[i] = 0;
272 }
273
275
280 }
281
283
284 if (UniqueScriptCounter == 0) {
286 }
287
288 return newScript;
289}
290
292 Evt* newScript;
295 s32 i;
296
297 for (i = 0; i < MAX_SCRIPTS; i++) {
298 if ((*gCurrentScriptListPtr)[i] == NULL) {
299 break;
300 }
301 }
302
303 ASSERT(i < MAX_SCRIPTS);
304 curScriptIndex = i;
305
306 (*gCurrentScriptListPtr)[curScriptIndex] = newScript = heap_malloc(sizeof(*newScript));
307 gNumScripts++;
309
310 newScript->stateFlags = flags | EVT_FLAG_ACTIVE;
311 newScript->curOpcode = EVT_OP_INTERNAL_FETCH;
312 newScript->priority = priority;
314 newScript->ptrNextLine = (Bytecode*)source;
315 newScript->ptrFirstLine = (Bytecode*)source;
316 newScript->ptrCurLine = (Bytecode*)source;
317 newScript->userData = NULL;
318 newScript->blockingParent = NULL;
319 newScript->childScript = NULL;
320 newScript->parentScript = NULL;
321 newScript->owner1.actorID = -1;
322 newScript->owner2.npcID = -1;
323 newScript->loopDepth = -1;
324 newScript->switchDepth = -1;
325 newScript->groupFlags = groupFlags;
326 newScript->ptrSavedPos = NULL;
327 newScript->frameCounter = 0.0f;
328 newScript->unk_158 = 0;
329 newScript->timeScale = GlobalTimeRate;
330 newScript->debugPaused = FALSE;
331
332 scriptListCount = 0;
333
334 for (i = 0; i < ARRAY_COUNT(newScript->varTable); i++) {
335 newScript->varTable[i] = 0;
336 }
337 for (i = 0; i < ARRAY_COUNT(newScript->varFlags); i++) {
338 newScript->varFlags[i] = 0;
339 }
340
342
347 }
348
350
351 if (UniqueScriptCounter == 0) {
353 }
354
355 return newScript;
356}
357
361 Evt* child;
362 s32 i;
363
364 for (i = 0; i < MAX_SCRIPTS; i++) {
365 if ((*gCurrentScriptListPtr)[i] == NULL) {
366 break;
367 }
368 }
369
370 ASSERT(i < MAX_SCRIPTS);
371 curScriptIndex = i;
372
373 (*gCurrentScriptListPtr)[curScriptIndex] = child = heap_malloc(sizeof(*child));
374 gNumScripts++;
375 ASSERT(child != NULL);
376
377 parentScript->childScript = child;
378 parentScript->stateFlags |= EVT_FLAG_BLOCKED_BY_CHILD;
380 child->ptrCurLine = child->ptrFirstLine = child->ptrNextLine = (Bytecode*)source;
381
383 child->userData = NULL;
384 child->blockingParent = parentScript;
385 child->childScript = NULL;
386 child->parentScript = NULL;
387 child->priority = parentScript->priority + 1;
388 child->id = UniqueScriptCounter++;
389 child->owner1 = parentScript->owner1;
390 child->owner2 = parentScript->owner2;
391 child->loopDepth = -1;
392 child->switchDepth = -1;
393 child->groupFlags = parentScript->groupFlags;
394 child->ptrSavedPos = NULL;
395 child->array = parentScript->array;
396 child->flagArray = parentScript->flagArray;
397 child->timeScale = GlobalTimeRate;
398 child->frameCounter = 0.0f;
399 child->unk_158 = 0;
400 child->debugPaused = FALSE;
401
402 scriptListCount = 0;
403
404 for (i = 0; i < ARRAY_COUNT(child->varTable); i++) {
405 child->varTable[i] = parentScript->varTable[i];
406 }
407
408 for (i = 0; i < ARRAY_COUNT(child->varFlags); i++) {
409 child->varFlags[i] = parentScript->varFlags[i];
410 }
411
412 find_script_labels(child);
413 if (IsUpdatingScripts) {
417 }
418
420
421 if (UniqueScriptCounter == 0) {
423 }
424
425 return child;
426}
427
429 Evt* child;
431 s32 i;
433
434 for (i = 0; i < MAX_SCRIPTS; i++) {
435 if ((*gCurrentScriptListPtr)[i] == NULL) {
436 break;
437 }
438 }
439
440 ASSERT(i < MAX_SCRIPTS);
441 curScriptIndex = i;
442
443 (*gCurrentScriptListPtr)[curScriptIndex] = child = heap_malloc(sizeof(*child));
444 gNumScripts++;
445 ASSERT(child != NULL);
446
448 child->ptrNextLine = nextLine;
449 child->ptrFirstLine = nextLine;
450 child->ptrCurLine = nextLine;
452 child->userData = NULL;
453 child->blockingParent = NULL;
454 child->parentScript = parentScript;
455 child->childScript = NULL;
456 child->priority = parentScript->priority;
457 child->id = UniqueScriptCounter++;
458 child->owner1.actorID = parentScript->owner1.actorID;
459 child->owner2.npcID = parentScript->owner2.npcID;
460 child->loopDepth = -1;
461 child->switchDepth = -1;
462 child->groupFlags = parentScript->groupFlags;
463 child->ptrSavedPos = NULL;
464 child->array = parentScript->array;
465 child->flagArray = parentScript->flagArray;
466 child->timeScale = GlobalTimeRate;
467 child->frameCounter = 0.0f;
468 child->unk_158 = 0;
469 child->debugPaused = FALSE;
470
471 scriptListCount = 0;
472
473 for (i = 0; i < ARRAY_COUNT(child->varTable); i++) {
474 child->varTable[i] = parentScript->varTable[i];
475 }
476
477 for (i = 0; i < ARRAY_COUNT(child->varFlags); i++) {
478 child->varFlags[i] = parentScript->varFlags[i];
479 }
480
481 find_script_labels(child);
482 if (IsUpdatingScripts) {
486 }
487
488 if (UniqueScriptCounter == 0) {
490 }
491
493 return child;
494}
495
497 Evt* curScript;
498 s32 i;
499
501 script->ptrFirstLine = line;
502 script->ptrCurLine = line;
503 script->curOpcode = EVT_OP_INTERNAL_FETCH;
504 script->frameCounter = 0;
505 script->stateFlags |= arg2;
506 script->timeScale = 1.0f;
507
508 #if DX_DEBUG_MENU
510 #endif
511
512 if (script->userData != NULL) {
513 heap_free(script->userData);
514 script->userData = NULL;
515 }
516
517 if (script->childScript != 0) {
518 kill_script(script->childScript);
519 }
520
521 for (i = 0; i < MAX_SCRIPTS; i++) {
522 curScript = (*gCurrentScriptListPtr)[i];
523 if ((curScript != 0) && (curScript->parentScript == script)) {
525 }
526 }
527 script->loopDepth = -1;
528 script->switchDepth = -1;
529 script->blockingParent = NULL;
530 script->parentScript = NULL;
531 script->childScript = NULL;
532 script->frameCounter = 0.0f;
533 script->unk_158 = 0;
534 script->timeScale = GlobalTimeRate;
537
538 return script;
539}
540
542 Bytecode* ptrFirstLine = script->ptrFirstLine;
543
544 // frameCounter gets set to 0 twice which makes me think a macro is being used here
545 script->loopDepth = -1;
546 script->switchDepth = -1;
547 script->frameCounter = 0;
548 script->curOpcode = EVT_OP_INTERNAL_FETCH;
549
550 script->ptrNextLine = ptrFirstLine;
551 script->ptrCurLine = ptrFirstLine;
552 script->timeScale = 1.0f;
553 script->frameCounter = 0;
554 script->unk_158 = 0;
555
556 script->timeScale = GlobalTimeRate;
557
560
561 return script;
562}
563
564void update_scripts(void) {
565 s32 i;
566
568 return;
569 }
570
572 sort_scripts();
573
574 for (i = 0; i < gScriptListCount; i++) {
575 Evt* script = (*gCurrentScriptListPtr)[gScriptIndexList[i]];
576
577 if (script != NULL
578 && script->id == gScriptIdList[i]
579 && script->stateFlags != 0
581 ) {
582 b32 stop = FALSE;
583 s32 status;
584
585 script->frameCounter += script->timeScale;
586
587 do {
588 if (script->frameCounter < 1.0) {
589 // Continue to next script
590 break;
591 };
592
593 script->frameCounter -= 1.0;
595 if (status == EVT_CMD_RESULT_ERROR) {
596 stop = TRUE;
597 break;
598 }
599 } while (status != EVT_CMD_RESULT_YIELD);
600
601 if (stop) {
602 break;
603 }
604 }
605 }
607}
608
609// Does nothing, is cursed
610void func_802C3EE4(void) {
611 s32 temp;
612 s32 i;
613
614 for (i = 0; i < gScriptListCount; i++) {
616 temp = *((s32*) temp);
617 if (temp == gScriptIdList[i]) {
618 temp = 1;
619 }
620 }
621}
622
624 Evt* childScript;
625 Evt* blockingParent;
626 s32 j;
627 s32 i;
628
629 for (i = 0; i < MAX_SCRIPTS; i++) {
631 break;
632 }
633 }
634
635 if (i >= MAX_SCRIPTS) {
636 return;
637 }
638
639 childScript = instanceToKill->childScript;
640 if (childScript != NULL) {
641 kill_script(childScript);
642 }
643
644 for (j = 0; j < MAX_SCRIPTS; j++) {
645 Evt* tempScriptInstance = (*gCurrentScriptListPtr)[j];
646 if (tempScriptInstance != NULL) {
647 if (tempScriptInstance->parentScript == instanceToKill) {
649 }
650 }
651 }
652
653 blockingParent = instanceToKill->blockingParent;
654 if (blockingParent != NULL) {
655 blockingParent->childScript = NULL;
656 blockingParent->stateFlags &= ~EVT_FLAG_BLOCKED_BY_CHILD;
657
658 for (j = 0; j < ARRAY_COUNT(blockingParent->varTable); j++) {
659 blockingParent->varTable[j] = instanceToKill->varTable[j];
660 }
661
662 for (j = 0; j < ARRAY_COUNT(blockingParent->varFlags); j++) {
663 blockingParent->varFlags[j] = instanceToKill->varFlags[j];
664 }
665 }
666
667 #if DX_DEBUG_MENU
669 #endif
670
671 if (instanceToKill->userData != NULL) {
672 heap_free(instanceToKill->userData);
673 instanceToKill->userData = NULL;
674 }
675
677 (*gCurrentScriptListPtr)[i] = NULL;
678 gNumScripts--;
679}
680
682 s32 i;
684
685 for (i = 0; i < MAX_SCRIPTS; i++) {
686 scriptContextPtr = (*gCurrentScriptListPtr)[i];
687 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
689 }
690 }
691}
692
694 s32 i;
696
697 for (i = 0; i < MAX_SCRIPTS; i++) {
698 scriptContextPtr = (*gCurrentScriptListPtr)[i];
699 if (scriptContextPtr != NULL) {
701 }
702 }
703}
704
706 s32 i;
708
709 for (i = 0; i < MAX_SCRIPTS; i++) {
710 scriptContextPtr = (*gCurrentScriptListPtr)[i];
711 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
712 return TRUE;
713 }
714 }
715 return FALSE;
716}
717
719 s32 i;
720
721 for (i = 0; i < MAX_SCRIPTS; i++) {
722 if (script == (*gCurrentScriptListPtr)[i]) {
723 return TRUE;
724 }
725 }
726 return FALSE;
727}
728
730 script->priority = priority;
731}
732
736
737void set_global_timespace(f32 timeScale) {
738 GlobalTimeRate = timeScale;
739}
740
742 return GlobalTimeRate;
743}
744
745void set_script_group(Evt* script, s32 groupFlags) {
746 script->groupFlags = groupFlags;
747}
748
750 s32 priority, s32 arg6) {
751 Trigger* trigger;
753
755 bp.colliderID = triggerFlagIndex;
756 bp.tattleMsg = 0;
758 bp.hasPlayerInteractPrompt = arg6;
759
760 trigger = create_trigger(&bp);
761 trigger->onTriggerEvt = script;
762 trigger->runningScript = NULL;
763 trigger->priority = priority;
764 trigger->varTable[0] = triggerVar0;
765 trigger->varTable[1] = triggerVar1;
766 return trigger;
767}
768
773
774void suspend_group_script(Evt* script, s32 groupFlags) {
775 Evt* childScript = script->childScript;
776 s32 i;
777
778 if (childScript != NULL) {
779 suspend_group_script(childScript, groupFlags);
780 }
781
782 for (i = 0; i < MAX_SCRIPTS; i++) {
783 Evt* scriptContextPtr = (*gCurrentScriptListPtr)[i];
784
785 if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
787 }
788 }
789
790 if ((script->groupFlags & groupFlags) != 0) {
791 script->stateFlags |= EVT_FLAG_PAUSED;
792 }
793}
794
795void resume_group_script(Evt* script, s32 groupFlags) {
796 Evt* childScript = script->childScript;
797 s32 i;
798
799 if (childScript != NULL) {
800 resume_group_script(childScript, groupFlags);
801 }
802
803 for (i = 0; i < MAX_SCRIPTS; i++) {
804 Evt* scriptContextPtr = (*gCurrentScriptListPtr)[i];
805
806 if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
808 }
809 }
810
811 if ((script->groupFlags & groupFlags) != 0) {
812 script->stateFlags &= ~EVT_FLAG_PAUSED;
813 }
814}
815
817 s32 i;
818
819 for (i = 0; i < MAX_SCRIPTS; i++) {
820 Evt* scriptContextPtr = (*gCurrentScriptListPtr)[i];
821
822 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
824 }
825 }
826}
827
829 s32 i;
831
832 for (i = 0; i < MAX_SCRIPTS; i++) {
833 scriptContextPtr = (*gCurrentScriptListPtr)[i];
834 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
836 }
837 }
838}
839
840void suspend_group_script_index(s32 id, s32 groupFlags) {
841 s32 i;
843
844 for (i = 0; i < MAX_SCRIPTS; i++) {
845 scriptContextPtr = (*gCurrentScriptListPtr)[i];
846 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
848 }
849 }
850}
851
852void resume_group_script_index(s32 id, s32 groupFlags) {
853 s32 i;
855
856 for (i = 0; i < MAX_SCRIPTS; i++) {
857 scriptContextPtr = (*gCurrentScriptListPtr)[i];
858 if (scriptContextPtr != NULL && scriptContextPtr->id == id) {
860 }
861 }
862}
863
864void suspend_all_group(s32 groupFlags) {
865 s32 i;
867
868 for (i = 0; i < MAX_SCRIPTS; i++) {
869 scriptContextPtr = (*gCurrentScriptListPtr)[i];
870 if (scriptContextPtr != NULL) {
872 }
873 }
874}
875
877 s32 i;
879
880 for (i = 0; i < MAX_SCRIPTS; i++) {
881 scriptContextPtr = (*gCurrentScriptListPtr)[i];
882 if (scriptContextPtr != NULL) {
884 }
885 }
886}
887
888void suspend_group_others(Evt* script, s32 groupFlags) {
889 s32 i;
891
892 for (i = 0; i < MAX_SCRIPTS; i++) {
893 scriptContextPtr = (*gCurrentScriptListPtr)[i];
896 }
897 }
898}
899
900void resume_group_others(Evt* script, s32 groupFlags) {
901 s32 i;
903
904 for (i = 0; i < MAX_SCRIPTS; i++) {
905 scriptContextPtr = (*gCurrentScriptListPtr)[i];
908 }
909 }
910}
911
913 return (*gCurrentScriptListPtr)[index];
914}
915
917 s32 i;
919
920 for (i = 0; i < MAX_SCRIPTS; i++) {
921 if ((*gCurrentScriptListPtr)[i] != NULL) {
922 scriptContextPtr = (*gCurrentScriptListPtr)[i];
923 if (scriptContextPtr->id == id) {
924 return scriptContextPtr;
925 }
926 }
927 }
928 return 0;
929}
930
932 Evt* childScript = script->childScript;
933 s32 i;
934
936 if (childScript != NULL) {
937 set_script_flags(childScript, flags);
938 }
939
940 for (i = 0; i < MAX_SCRIPTS; i++) {
941 Evt* scriptContextPtr = (*gCurrentScriptListPtr)[i];
942
943 if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
944 set_script_flags(script->parentScript, flags);
945 }
946 }
947}
948
950 Evt* childScript = script->childScript;
951 s32 i;
952
954 if (childScript != NULL) {
955 clear_script_flags(childScript, flags);
956 }
957
958 for (i = 0; i < MAX_SCRIPTS; i++) {
959 Evt* scriptContextPtr = (*gCurrentScriptListPtr)[i];
960
961 if (scriptContextPtr != NULL && scriptContextPtr->parentScript == script) {
963 }
964 }
965}
BSS s32 PopupMenu_SelectedIndex
Bytecode * ptrNextLine
b8 debugPaused
u8 stateFlags
struct Evt * parentScript
u8 curOpcode
struct Evt * childScript
u8 groupFlags
Evt * ScriptList[128]
struct Evt * blockingParent
s32 * flagArray
s8 switchDepth
union Evt::@11 owner2
Initially -1.
s8 loopDepth
s32 * array
AnimatedModel * AnimatedModelList[16]
s32 b32
s32 unk_158
Bytecode * ptrSavedPos
s32 varFlags[3]
Bytecode * ptrCurLine
VirtualEntity * VirtualEntityList[0x40]
void * userData
Bytecode EvtScript[]
f32 frameCounter
Bytecode * ptrFirstLine
f32 timeScale
union Evt::@10 owner1
Initially -1.
u8 priority
s8 flags
Definition demo_api.c:15
#define ASSERT(condition)
@ DEBUG_SCRIPTS_NO_UPDATE
Definition enums.h:3875
@ TIME_FREEZE_FULL
Definition enums.h:3500
@ TIME_FREEZE_POPUP_MENU
Definition enums.h:3501
@ TIME_FREEZE_PARTIAL
Definition enums.h:3499
@ TIME_FREEZE_NONE
Definition enums.h:3498
@ TIME_FREEZE_EXIT
Definition enums.h:3502
@ CONTEXT_WORLD
Definition enums.h:3562
@ TRIGGER_SCRIPT_BOUND
Definition enums.h:2677
@ EVT_OP_INTERNAL_FETCH
Definition evt.h:10
s32 Bytecode
Definition evt.h:7
@ EVT_GROUP_FLAG_MENUS
Definition evt.h:136
@ EVT_GROUP_NOT_BATTLE
Definition evt.h:148
@ EVT_GROUP_FLAG_INTERACT
Definition evt.h:135
@ EVT_CMD_RESULT_YIELD
Definition evt.h:124
@ EVT_CMD_RESULT_ERROR
Definition evt.h:126
@ EVT_FLAG_ACTIVE
Definition evt.h:159
@ EVT_FLAG_PAUSED
paused through suspend_group_script / resume_group_script
Definition evt.h:160
@ EVT_FLAG_RUN_IMMEDIATELY
don't wait for next update_scripts call
Definition evt.h:162
@ EVT_FLAG_BLOCKED_BY_CHILD
Definition evt.h:161
@ EVT_FLAG_SUSPENDED
doesn't affect child
Definition evt.h:164
void init_model_animators(void)
Definition model_api.c:278
void init_virtual_entity_list(void)
s32 evt_trigger_on_activate_exec_script(Trigger *trigger)
Definition evt.c:983
s32 heap_free(void *ptr)
Definition heap.c:42
void clear_virtual_entity_list(void)
Trigger * create_trigger(TriggerBlueprint *def)
Definition trigger.c:55
void reset_model_animators(void)
Definition model_api.c:258
void * heap_malloc(s32 size)
Definition heap.c:34
#define MAX_MAPFLAGS
Definition macros.h:82
#define MAX_SCRIPTS
Definition macros.h:90
#define BSS
Definition macros.h:7
#define ARRAY_COUNT(arr)
Definition macros.h:40
#define MAX_MAPVARS
Definition macros.h:81
#define PANIC()
Definition macros.h:55
void clear_script_list(void)
s32 does_script_exist_by_ref(Evt *script)
BSS s32 LastSafeFloor
Definition script_list.c:26
void suspend_group_others(Evt *script, s32 groupFlags)
Evt * start_script_in_group(EvtScript *source, u8 priority, u8 flags, u8 groupFlags)
void kill_all_scripts(void)
void kill_script(Evt *instanceToKill)
void resume_group_script_index(s32 id, s32 groupFlags)
BSS u32 * gMapFlags
Definition script_list.c:11
BSS u32 gWorldMapFlags[MAX_MAPFLAGS]
Definition script_list.c:60
void resume_group_script(Evt *script, s32 groupFlags)
void sort_scripts(void)
Definition script_list.c:73
BSS u32 gBattleMapFlags[MAX_MAPFLAGS]
Definition script_list.c:61
void func_802C3EE4(void)
BSS s32 ShowMessageScreenOffsetX
Definition script_list.c:38
BSS AnimatedModelList gBattleMeshAnimationList
Definition script_list.c:29
Evt * func_802C3C10(Evt *script, Bytecode *line, s32 arg2)
s32 UniqueScriptCounter
Definition script_list.c:6
BSS u32 gBattleMapVars[MAX_MAPVARS]
Definition script_list.c:64
void set_script_group(Evt *script, s32 groupFlags)
BSS s32 wExtraPartnerNpcID
Definition script_list.c:35
BSS u32 gWorldMapVars[MAX_MAPVARS]
Definition script_list.c:63
BSS struct LavaReset * gLavaResetList
Definition script_list.c:25
BSS ScriptList gBattleScriptList
Definition script_list.c:15
BSS VirtualEntityList bBattleVirtualEntityList
Definition script_list.c:47
BSS char evtDebugPrintBuffer[0x100]
Definition script_list.c:22
BSS s32 gScriptListCount
Definition script_list.c:19
Evt * get_script_by_index(s32 index)
s32 resume_all_group(s32 groupFlags)
s32 suspend_all_script(s32 id)
BSS s32 gScriptIdList[MAX_SCRIPTS]
Definition script_list.c:18
void suspend_group_script(Evt *script, s32 groupFlags)
void find_script_labels(Evt *script)
BSS AnimatedModelList gWorldMeshAnimationList
Definition script_list.c:30
void update_scripts(void)
void set_script_flags(Evt *script, s32 flags)
BSS ScriptList gWorldScriptList
Definition script_list.c:14
void suspend_group_script_index(s32 id, s32 groupFlags)
BSS AnimatedModelList * gCurrentMeshAnimationListPtr
Definition script_list.c:31
f32 GlobalTimeRate
Definition script_list.c:8
BSS s32 DoorModelsSwingCCW[3]
Definition script_list.c:69
BSS s32 * gMapVars
Definition script_list.c:12
void clear_script_flags(Evt *script, s32 flags)
Evt * start_child_thread(Evt *parentScript, Bytecode *nextLine, s32 newState)
void set_global_timespace(f32 timeScale)
void resume_group_others(Evt *script, s32 groupFlags)
void kill_script_by_ID(s32 id)
void init_script_list(void)
BSS PopupMenu gItemChoicePopupMenu
Definition script_list.c:57
s32 evt_execute_next_command(Evt *script)
Definition evt.c:1359
void suspend_frozen_scripts(Evt *script)
BSS s32 gScriptIndexList[MAX_SCRIPTS]
Definition script_list.c:17
Evt * start_script(EvtScript *source, s32 priority, s32 flags)
BSS s32 D_802DB264
Definition script_list.c:42
void set_script_timescale(Evt *script, f32 timescale)
s32 IsUpdatingScripts
Definition script_list.c:7
BSS u16 PlayerImgFXFlags
Definition script_list.c:46
BSS Npc playerNpcData
Definition script_list.c:45
BSS VirtualEntityList * gCurrentVirtualEntityListPtr
Definition script_list.c:49
void set_script_priority(Evt *script, s32 priority)
BSS VirtualEntityList wWorldVirtualEntityList
Definition script_list.c:48
Evt * start_child_script(Evt *parentScript, EvtScript *source, s32 flags)
s32 resume_all_script(s32 id)
BSS MessagePrintState * D_802DB268
Definition script_list.c:41
s32 does_script_exist(s32 id)
BSS s32 DoorModelsSwingCW[3]
Definition script_list.c:68
BSS ScriptList * gCurrentScriptListPtr
Definition script_list.c:16
BSS MessagePrintState * gCurrentPrintContext
Definition script_list.c:40
BSS MusicEvent * MusicEventList
Definition script_list.c:52
BSS Evt * RunningMusicEvents[10]
Definition script_list.c:53
Trigger * bind_trigger(EvtScript *script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1, s32 priority, s32 arg6)
BSS PushBlockGrid * wPushBlockGrids[8]
Definition script_list.c:66
f32 get_global_timespace(void)
Evt * get_script_by_id(s32 id)
BSS s32 gNumScripts
Definition script_list.c:13
void suspend_all_group(s32 groupFlags)
Trigger * bind_trigger_1(EvtScript *script, s32 flags, s32 triggerFlagIndex, s32 triggerVar0, s32 triggerVar1, s32 priority)
Evt * restart_script(Evt *script)
BSS s32 wExtraPartnerID
Definition script_list.c:34
BSS s32 ShowMessageScreenOffsetY
Definition script_list.c:39
BSS s32 RunningMusicEventIDs[10]
Definition script_list.c:54
EvtScript * onTriggerEvt
struct Evt * runningScript
GameStatus * gGameStatusPtr
Definition main_loop.c:31
s32 gTimeFreezeMode
Definition main_loop.c:11