[FE8] Game freezes after skipping beginning event

So I’m having a weird issue, whenever I skip the beginning events for this chapter, the game just seems to go to a black screen and sit there until you restart the ROM.

I haven’t been able to figure out why (and I’ve been trying to for a couple days), so I’m wondering if anybody here has any ideas about why it’s happening.

[Video showing the problem - link removed

As well as the event file for that prologue (complete with my awful REDA naming convention and comments)

[Spoiler=Event file]

#include EAstdlib.event

EventPointerTable(0x07,ThisChapter)

ORG 0x1000200

ThisChapter:
POIN TurnBasedEvents
POIN CharacterBasedEvents
POIN LocationBasedEvents
POIN MiscBasedEvents
POIN Dunno Dunno Dunno
POIN Tutorial
POIN TrapData TrapData
POIN Units Units
POIN $0 $0 $0 $0 $0 $0
POIN BeginningScene EndingScene

Units:
UNIT Eirika 0x02 0x00 Level(1,Ally,False) [4,8] 0x00 0x00 0x01 T1 [IronSword, Vulnerary] NoAI
UNIT 0x19 0x4B 0x02 Level(1,Ally,False) [3,8] 0x00 0x00 0x01 T2 [0x4B, Vulnerary] NoAI
UNIT

T1:
REDA [4,8] 0x5 0x00 0x00 0x00 0x00

T2:
REDA [3,8] 0x5 0x00 0x00 0x00 0x00

T3:
REDA [19,4] 0x5 0x00 0x00 0x00 0x00

TM1:
REDA [14,5] 0x5 0x00 0x00 0x00 0x00

TF:
REDA [10,8] 0x5 0x00 0x00 0x00 0x00

TM2:
REDA [6,3] 0x5 0x00 0x00 0x00 0x00

Enemies:
UNIT 0x68 0x05 0x00 Level(1,Enemy,True) [19,4] 0x00 0x00 0x01 T3 [IronSword] [0x3,0x3,0x9,0x20]//Appears to be Guard
UNIT 0x88 0x0F 0x68 Level(1,Enemy,True) [14,5] 0x00 0x00 0x01 TM1 [IronSword] [0x0,0x3,0x9,0x0]
UNIT 0x88 0x0F 0x68 Level(1,Enemy,True) [6,3] 0x00 0x00 0x01 TM2 [IronSword] [0x0,0x3,0x9,0x0]
UNIT 0x81 0x3F 0x68 Level(1,Enemy,True) [10,8] 0x00 0x00 0x01 TF [IronAxe] [0x0,0x3,0x9,0x0]
UNIT

TurnBasedEvents:
TurnEventPlayer(0x0A,Oona1,1)
TurnEventPlayer(0x0F,Oona2,2)
END_MAIN

CharacterBasedEvents:
END_MAIN

LocationBasedEvents:
END_MAIN

MiscBasedEvents:
CauseGameOverIfLordDies
DefeatBoss(EndingScene)
END_MAIN

Dunno:
//DO NOT TOUCH
WORD $00

Tutorial:
//DO NOT TOUCH
WORD $00

TrapData:
END_MAIN

ALIGN 4

BeginningScene:
SETVAL 0xB 0x050007
LOMA 0x0A
EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0xA 0x0 0x0 //show bg
FADU 16
MUS1 0x2E
TEXTSHOW 0x903
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
//Text(0x0A,0x903) //Soldier-Kalvesta
REMA
REMA
MUS1 0x00
FlashCursor(9,5,60)

EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0x02 0x0 0x0 //show bg
FADU 16
MUS1 0x17
TEXTSHOW 0x905 //village stuff
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
MUS1 0x00

FlashCursor(1,2,60)
FADI 0x10
STAL 0x10
FADU 0x10
SETVAL 0xB 0x050007
LOMA 0x0B
CAM1[17,4]
STAL 0x10
_LOAD1 0x1 SenecaKalvesta
ENUN

EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0x0A 0x0 0x0 //show bg
FADU 16
MUS1 0x2E
TEXTSHOW 0x907 //seneca meets queen
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
MUS1 0x00

//Fighting shit goes here
StartBattle
CriticalHit(0,40)
EndAttack
FIG1 0x5A 0xCB 0x00
DISA 0xCB
CUMO 0x5A
STAL 0x30
CURE

EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0x0A 0x0 0x0 //show bg
FADU 16
MUS1 0x17
TEXTSHOW 0x908 //post regicide
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16

DISA 0x5A
DISA Eirika

EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0x13 0x0 0x0 //show bg
FADU 16
MUS1 0x29
TEXTSHOW 0x909 //guard tells bell to gtfo
TEXTEND
MUS1 0x17
TEXTCONT
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
MUS1 0x00

SETVAL 0xB 0x050007
LOMA 0x00

EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0x18 0x0 0x0 //show bg
FADU 16
MUS1 0x29
TEXTSHOW 0x90C //make good haste bell
TEXTEND
MUS1 0x00
MUS1 0x25
TEXTCONT
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16

MUS1 0x00
_LOAD1 0x1 Units 
_LOAD1 0x1 Enemies
ENUN
ENDA

EndingScene:
MUS1 0x32
EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
//_0x2140 0xA 0x0 0x0 //show bg
FADU 16
MUS1 0x2E
TEXTSHOW 0x90F //emding talk
TEXTEND
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
MNC2 0x1
ENDA

// Events
Oona1:
//Belle remember your training
MUS1 0x09
TEXTSTART
TEXTSHOW 0x90D
TEXTEND
ENDA

Oona2:
//Seek refuge behind me
TEXTSTART
TEXTSHOW 0x90E
TEXTEND
ENDA
// Manual Movement

// Scripted Fights

// Units
//UNIT *Char ID* *Class ID* *Leader char* Level(#,side,autolevel?)  [Loading position X, Loading position Y] 
//*Flags* *Byte1* *Amount* *REinforcement DAta* [Item 1, Item 2, Item 3, Item 4] [AI 1, AI 2, AI 3, AI 4]
SenecaKalvesta:
UNIT 0xCB 0x2C 0x02 Level(1,NPC,1) [13,1] 0x00 0x00 0x01 T4 [0x00]NoAI
UNIT 0x5A 0x15 0x00 Level(1,Enemy,1) [14,5] 0x00 0x00 0x01 T5 [0x0D] NoAI
UNIT Eirika 0x02 0x00 Level(1,Ally,False) [12,1] 0x00 0x00 0x01 T6 [IronSword] NoAI
UNIT

T4:
REDA [13,1] 0x01 0x00 0x00 0x00 0x00

T5:
REDA [13,2] 0x10 0x00 0x00 0x00 0x00

T6:
REDA [12,1] 0x10 0x00 0x00 0x00 0x00
// Shop Data

MESSAGE Events end at offset currentOffset

[/Spoiler]

What happens if you try to skip halfway through the events instead of at the start? Maybe you can narrow it down?

The weird thing is you can skip individual talks, but pressing start to skip the whole thing gives the same issues no matter which part of the event it is.

Further testing shows that it’s doing it for any chapter

First of all, why are you keeping all of that irrelevant and unknown data? You should clean up your events a bit more.

Aside from that, is this the Prologue? Weird stuff may occur if you don’t follow the structure of vanilla FE8 chapters (if you can’t hack world map events).

Hmmmh… That black screen freeze usually occurs when the game can’t find something that your events are trying to refer to.
For example, when you have "FlashCursor(Seth,80) and Seth isn’t on the map. Double check any of those problems. Perhaps try removing the fight scenes and see what happens.

Unfortunately I’m not much familiar with those (Venno’s?) macros so I can’t really help you much there.

I honestly don’t know what data of all that isn’t relevant.

Yeah it’s the prologue, but I don’t think it’s the fight scenes because it’s doing the same thing in my WIP ch1 events, and that’s just talking and loading units so far.

I managed to get it working!
All I did was clean up the event a bit, and now it works for some reason. Basically all I did was move all of your reused code into their own labels (BGStart and BGEnd), and somehow that fixed it.

#include EAstdlib.event

EventPointerTable(0x07,ThisChapter)

ORG 0x1000200

ThisChapter:
POIN TurnBasedEvents
POIN CharacterBasedEvents
POIN LocationBasedEvents
POIN MiscBasedEvents
POIN Dunno Dunno Dunno
POIN Tutorial
POIN TrapData TrapData
POIN Units Units
POIN $0 $0 $0 $0 $0 $0
POIN BeginningScene EndingScene

Units:
UNIT Eirika 0x02 0x00 Level(1,Ally,False) [4,8] 0x00 0x00 0x01 T1 [IronSword, Vulnerary] NoAI
UNIT 0x19 0x4B 0x02 Level(1,Ally,False) [3,8] 0x00 0x00 0x01 T2 [0x4B, Vulnerary] NoAI
UNIT

T1:
REDA [4,8] 0x5 0x00 0x00 0x00 0x00

T2:
REDA [3,8] 0x5 0x00 0x00 0x00 0x00

T3:
REDA [19,4] 0x5 0x00 0x00 0x00 0x00

TM1:
REDA [14,5] 0x5 0x00 0x00 0x00 0x00

TF:
REDA [10,8] 0x5 0x00 0x00 0x00 0x00

TM2:
REDA [6,3] 0x5 0x00 0x00 0x00 0x00

Enemies:
UNIT 0x68 0x05 0x00 Level(1,Enemy,True) [19,4] 0x00 0x00 0x01 T3 [IronSword] [0x3,0x3,0x9,0x20]//Appears to be Guard
UNIT 0x88 0x0F 0x68 Level(1,Enemy,True) [14,5] 0x00 0x00 0x01 TM1 [IronSword] [0x0,0x3,0x9,0x0]
UNIT 0x88 0x0F 0x68 Level(1,Enemy,True) [6,3] 0x00 0x00 0x01 TM2 [IronSword] [0x0,0x3,0x9,0x0]
UNIT 0x81 0x3F 0x68 Level(1,Enemy,True) [10,8] 0x00 0x00 0x01 TF [IronAxe] [0x0,0x3,0x9,0x0]
UNIT

TurnBasedEvents:
TurnEventPlayer(0x0A,Oona1,1)
TurnEventPlayer(0x0F,Oona2,2)
END_MAIN

CharacterBasedEvents:
END_MAIN

LocationBasedEvents:
END_MAIN

MiscBasedEvents:
CauseGameOverIfLordDies
DefeatBoss(EndingScene)
END_MAIN

Dunno:
//DO NOT TOUCH
WORD $00

Tutorial:
//DO NOT TOUCH
WORD $00

TrapData:
END_MAIN

ALIGN 4

BeginningScene:
SETVAL 0xB 0x050007
LOMA 0x0A
SETVAL 0x2 0xA
CALL BGStart
MUS1 0x2E
TEXTSHOW 0x903
TEXTEND
CALL BGEnd
//Text(0x0A,0x903) //Soldier-Kalvesta
REMA
REMA
MUS1 0x00
FlashCursor(9,5,60)

SETVAL 0x2 0x2
CALL BGStart
MUS1 0x17
TEXTSHOW 0x905 //village stuff
TEXTEND
CALL BGEnd
MUS1 0x00

FlashCursor(1,2,60)
FADI 0x10
STAL 0x10
FADU 0x10
SETVAL 0xB 0x050007
LOMA 0x0B
CAM1[17,4]
STAL 0x10
_LOAD1 0x1 SenecaKalvesta
ENUN
SETVAL 0x2 0xA
CALL BGStart
MUS1 0x2E
TEXTSHOW 0x907 //seneca meets queen
TEXTEND
CALL BGEnd
MUS1 0x00

//Fighting shit goes here
StartBattle
CriticalHit(0,40)
EndAttack
FIG1 0x5A 0xCB 0x00
DISA 0xCB
CUMO 0x5A
STAL 0x30
CURE

SETVAL 0x2 0xA
CALL BGStart
MUS1 0x17
TEXTSHOW 0x908 //post regicide
TEXTEND
CALL BGEnd

DISA 0x5A
DISA Eirika

SETVAL 0x2 0x13
CALL BGStart
MUS1 0x29
TEXTSHOW 0x909 //guard tells bell to gtfo
TEXTEND
MUS1 0x17
TEXTCONT
TEXTEND
CALL BGEnd
MUS1 0x00

SETVAL 0xB 0x050007
LOMA 0x00

SETVAL 0x2 0x18
CALL BGStart
MUS1 0x29
TEXTSHOW 0x90C //make good haste bell
TEXTEND
MUS1 0x00
MUS1 0x25
TEXTCONT
TEXTEND
CALL BGEnd

MUS1 0x00
LOAD1 0x1 Units 
LOAD1 0x1 Enemies
ENUN
ENDA

EndingScene:
MUS1 0x32
SETVAL 0x2 0xA
CALL BGStart
MUS1 0x2E
TEXTSHOW 0x90F //emding talk
TEXTEND
CALL BGEnd
MNC2 0x1
ENDA

// Events
Oona1:
//Belle remember your training
MUS1 0x09
TEXTSTART
TEXTSHOW 0x90D
TEXTEND
ENDA

Oona2:
//Seek refuge behind me
TEXTSTART
TEXTSHOW 0x90E
TEXTEND
ENDA
// Manual Movement

// Scripted Fights

// Units
//UNIT *Char ID* *Class ID* *Leader char* Level(#,side,autolevel?)  [Loading position X, Loading position Y] 
//*Flags* *Byte1* *Amount* *REinforcement DAta* [Item 1, Item 2, Item 3, Item 4] [AI 1, AI 2, AI 3, AI 4]
SenecaKalvesta:
UNIT 0xCB 0x2C 0x02 Level(1,NPC,1) [13,1] 0x00 0x00 0x01 T4 [0x00]NoAI
UNIT 0x5A 0x15 0x00 Level(1,Enemy,1) [14,5] 0x00 0x00 0x01 T5 [0x0D] NoAI
UNIT Eirika 0x02 0x00 Level(1,Ally,False) [12,1] 0x00 0x00 0x01 T6 [IronSword] NoAI
UNIT

T4:
REDA [13,1] 0x01 0x00 0x00 0x00 0x00

T5:
REDA [13,2] 0x10 0x00 0x00 0x00 0x00

T6:
REDA [12,1] 0x10 0x00 0x00 0x00 0x00
// Shop Data

BGStart:
EVBIT_CHECK 0x8 //some kind of check if it should fade in? Can't find any doc on evbits
IFEQUAL 0x80D2 0xC 0x0
FADI 16
ENIF 0x80D2
_0x1A21
_0x2140 0xFFFF 0x0 0x0 //show bg
FADU 16
ENDA

BGEnd:
EVBIT_CHECK 0x8 //another check for fading
IFEQUAL 0x80BD 0xC 0x0
FADI 16
ENIF 0x80BD
TEXTSTART //Apparently is not just used for starting text
_0x2220 //No idea
FADU 16
ENDA

MESSAGE Events end at offset currentOffset

Huh. That’s strange.

Maybe it was just the repeated use of those bits of code?

Code is magic?

6 Likes

In any case, it’s probably a good idea to split your events into labeled sub-events where possible. Especially when you’re reusing so much of it and repeating conditional IDs.

It’s also much easier to follow (extreme example):

BeginningScene:
CALL SoldierKalvesta
CALL VillageScene
CALL SenecaScene
CALL Assassination
CALL BelleGuard
CALL GuardKill
LOAD1 Units
LOAD1 Enemies
ENUN
ENDA
1 Like

Programming in a nutshell.

1 Like