Welcome to the Shining Force Central Forums!
SFC Forums Index Shining Forums Shining Force Gaiden Final Conflict
Register for your free forum account now or Login to remove this advert.

Cutscene Research And Documentation

Discussion about this excellent Game Gear RPG.

Cutscene Research And Documentation

Postby Wiz » Tue Feb 06 2018 9:36pm

Now that I've got a good amount of experience on SF2's cutscenes, I'd like to do the same kind of research on Final Conflict.
(and then convert everything to the SF2 engine, but that's another topic :D)

So I'll share everything I can here when I make progress, and maybe other people will be kind enough to contribute in a way or another. :)

First, I want to say that Emulicious is an AWESOME emulator : memory editor, live disassembly, tracer, coverage scan ... it has everything you can dream of, and even more.
http://emulicious.net/downloads/
Really a great piece of software which makes reverse-engineering much more comfortable than on other systems, we're lucky to have this.

So I've decided to work on the English SFC translated ROM, as it was a lot easier to recognize text line indexes with the translation's script files available.
I think I've found interesting addresses from which I should be able to document each cutscene command that I can see being parsed :

Code: Select all
RAM:0x1ED9 : stack location of cutscene line index
SRAM:0x232C : current cutscene line index
ROM:0xC20A : "Read new line" subroutine
ROM:0xC07B : "Play cutscene" subroutine

ROM:0xD7CF..0xDF93 : Intro cutscene (loaded into SRAM:0xB00 by chunks of $400 bytes)
ROM:0xDF93..0xE30C : New game cutscene before "Chapter 1" screen
ROM:0x41491 : Battle 1 intro cutscene
ROM:0x415FC : Battle 1 end cutscene


Now I've got to start parsing/documenting cutscene commands according to my observations while debugging.
A good breakpoint address is ROM:0xC0CF, where the next command is loaded into register A, while register HL contains current cutscene cursor offset.

Current commands met in the first seconds of the intro cutscene :

Code: Select all
$0A - Execute subroutine ?
Intro uses it to launch the scrolling text intro.
1 param :
- word : subroutine address ?

$0C - ?
Length = 8 bytes

$38 - ?
No params.

$2A - ?
Length = 3 bytes

$2B - ?
Length = 5 bytes

$15 - ?
Length = 3 bytes

$43 - ?
Length = 4 bytes

$4E - ?
Length = 7 bytes

$3D - ?
Length = 7 bytes

$51 - ?
Length = 2 bytes

$52 - ?
Length = 3 bytes

$53 - ?
No params

$54 - ?
Length = 2 bytes

$56 - ?
Length = 3 bytes

$04 - ?
Length = 2 bytes

$45 - ?
Intro : music starts and map fades in after this command.
No params.

$50 - ?
Lots of entity movement after this one, must be the move sequence command.
Length = 23 bytes for this first intro appearance.

$32 - Display portrait ?
1 param :
- byte : portrait index ?

$00 - Display next text line ?
No params.


That's all for the moment, I hope to report more progress in the next few days.
Meanwhile, anybody motivated enough is free to play with Emulicious and set this breakpoint to figure out stuff ! :D
Wiz

User avatar
Shining Member
Shining Member
 
Posts: 143
Joined: Sun Mar 18 2007 2:43pm
Location: Blois, France

Re: Cutscene Research And Documentation

Postby LordOddEye » Thu Feb 08 2018 1:12pm

Hey Wiz,

Thank you for all your hard work I want you to know the community appreciates it! I actually had not heard of that emulator that seems super powerful! These deconstructions are actually so useful to the community, both historically and for learning from.

I'm looking forward to seeing more updates in this I'll check back in a bit.

Regards,

LordOddEye
Creator of the Shining Force Gaiden Final Conflict Remake:

https://forums.shiningforcecentral.com/viewtopic.php?f=14&t=40095
Creator of the Shining Force Gaiden Final Conflict Remake:

https://forums.shiningforcecentral.com/viewtopic.php?f=14&t=40095
LordOddEye

User avatar
Shining Member
Shining Member
 
Posts: 243
Joined: Sun Dec 06 2009 11:01pm
Location: Canada

Re: Cutscene Research And Documentation

Postby alex_man » Thu Feb 08 2018 11:53pm

good work keep it up :thumbsup:
alex_man

User avatar
Shining Legend
Shining Legend
 
Posts: 2345
Joined: Sun Nov 14 2004 2:39pm
Location: Argentina

Re: Cutscene Research And Documentation

Postby Wiz » Mon Feb 26 2018 1:36am

I made some progress and I'm now storing my notes here :
https://github.com/ShiningForceCentral/SFFCRE

I'm focusing on the intro cutscene, which I've taken the time to watch/debug in detail, command after command, 523 in total. Phew ! :D
Found 34 different ones which I've mostly documented, but some of them are still a mystery.
Also, the "move sequence" command contains a whole layer of sub-commands which I've yet to analyze and document.

Current state :
Code: Select all
$0A - Execute subroutine
Intro uses it to launch the scrolling text intro.
$D657->ROM:0x57D6 with bank 3 mapped on slot 1 -> ROM:0xD7D6 : Scrolling text intro subroutine.
1 param :
- word : subroutine address, with bank 3 mapped on slot 1.

$0C - ?
$0C $C0 $05 $FF $DF $10 $1D $C9
Length = 8 bytes

$38 - ?
No apparent effect when removed from cutscene ...
No params.

$2A - Initialize Entity
Length = 3 bytes
Params :
- byte : entity index
- byte : entiy sprite

$2B - Initialize entity position ?
Length = 5 bytes
Params :
- byte : entity index
- byte : X Pos
- byte : Y Pos
- byte : some incremented index ? Entities with $80 index start from $0C ?

$15 - Set Facing
Length = 3 bytes
Params :
- byte : entity index
- byte : facing

$43 - Load Map
Length = 4 bytes
Params :
- byte : map index
- byte : Camera X Pos
- byte : Camera Y Pos

$4E - ?
Length = 7 bytes

$3D - Block copy
Params :
- byte : Source X
- byte : Source Y
- byte : Source width
- byte : Source height
- byte : Dest X
- byte : Dest Y

$51 - ?
Length = 2 bytes

$52 - Move sequence entity number
Params :
- byte : Number of entities for the next move sequence.

$53 - ?
No params

$54 - ?
Length = 2 bytes

$06 - Initialize text cursor
Params :
- byte : line index
- byte : bank index

$04 - Sound command
Music/SFX index.
$FD = fade out
Params :
- byte : sound command

$45 - Map fade in

$50 - Move Sequence
- One or multiple entities declared
- For each entity, the move sequence, ended with value $C0 or $D0
Move commands to document.

$32 - Display portrait
1 param :
- byte : portrait index

$00 - Display next text line, then hide textbox and portrait
No params.

$1E - Set Position
Params :
- byte : entity index
- byte : Pos X
- byte : Pos Y

$16 - Set Camera Destination
Params :
- byte : Camera Dest X
- byte : Camera Dest Y

$14 - Wait
Params :
- byte : Duration

$02 - Display next text line
No params.

$17 - Move Entity
Params :
- byte : Entity index
- byte : Direction
- byte : Distance

$3B - Entity Pulse
Params :
- byte : Entity index

$3F - Flash white
Params :
- byte : Number of flashes

$3A - Entity Jump
Params :
- byte : Entity index

$55 - Set quake
Params :
- byte : Amplitude

$34 - Rotate entity
Params :
- byte : Entity index
- byte : Rotation value (90° counter-clockwise)

$08 - ?
Before Adam's intro attack
Params :
- byte : ?
- byte : ?
- byte : ?

$3C - ?
After Adam's intro attack, screenshake
Params :
- byte : $08
- byte : $1E

$36 - Rotate and shrink
Params :
- byte : Entity index
- byte : Rotate value
- byte : Shrink value

$46 - Fade out to black
Wiz

User avatar
Shining Member
Shining Member
 
Posts: 143
Joined: Sun Mar 18 2007 2:43pm
Location: Blois, France

Re: Cutscene Research And Documentation

Postby stefanos2k10 » Fri Mar 16 2018 10:53am

wow i didnt realise the cutscenes took this much work lol
stefanos2k10

User avatar
Member
Member
 
Posts: 90
Joined: Wed Jul 13 2011 12:34pm


Return to Shining Force Gaiden Final Conflict

Who is online

Users viewing this topic: No registered users and 0 guests