Shining Force II Hacking: SF2 Disassembly Tool Suite
General thread for quick links, status reports and support
Moderator: Shining Moderators
-
EarlShining Legend
- Posts: 3018
- Joined: Sat Apr 24 2004 6:39am
- Status: Offline
Re: SF2 Disassembly Tool Suite
Oh, that would be fantastic. Getting the weapon to sit properly in a hand without a preview is such obnoxious trial and error : D
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Spoiler
Quick question just in case anybody already knows :
For each frame of an animation entry, the first byte is supposed to represent the battlesprite frame index to use for this animation frame.
But in the very first ally animation entry, I notice that one frame uses value "15" ($0F) to point to battlesprite frame 3, instead of just "3".
Does anybody know why, and what kind of extra-piece of information is contained in this "15" value ?
For each frame of an animation entry, the first byte is supposed to represent the battlesprite frame index to use for this animation frame.
But in the very first ally animation entry, I notice that one frame uses value "15" ($0F) to point to battlesprite frame 3, instead of just "3".
Does anybody know why, and what kind of extra-piece of information is contained in this "15" value ?
Here are BNC's notes about battlesprite animations :
EDIT : updated with my discoveries
Code: Select all
------ Ally Battle Sprite Animation Format
Byte 0 number of frames in attack anim
Byte 1 frame # to start spell anim idx
Byte 2 spell anim idx to play during attack, FF for none
Byte 3 whether or not to terminate spell anim when battle sprite anim finishes
Byte 4 weapon sprite frame for idle animation frame 1
Byte 5 weapon sprite z-index for idle animation frame 1
Byte 6 weapon sprite x offset for idle animation frame 1
Byte 7 weapon sprite y offset for idle animation frame 1
Frame Entries
First entry can be idle anim frame 2 if current battle sprite has one.
(Some battlesprites seem to have an idle frame 2 even when it's identical to idle frame 1 !)
Byte 0 battlesprite frame idx (if value $0F, then keep using battlesprite frame from previous animation frame)
Byte 1 number of display frames to display (60 frames per second)
Byte 2 battle sprite x offset
Byte 3 battle sprite y offset
Byte 4 weapon sprite frame (0 = up, going clockwise, up to 3; 0x10 = flip horizontally, 0x20 = flip vertically)
Byte 5 weapon sprite z-index (1 = under character, 2 = over character)
Byte 6 weapon sprite x offset
Byte 7 weapon sprite y offset
Note : Weapon sprites offsets are relative to current battlesprite position.
Earl you'll be glad to know that the preview feature is quite effective, with immediate update for any property change.
Edit :
Got to manage a thing or two (allies with no weapons, preview animation ...) and I'll do a first 0.1.0 release.
Enemy animation will have to wait a bit !
Last edit for tonight :
OK, here it is, supposedly fully operational for ally battlesprites.
I'll work on enemy battlesprites next, and maybe a GIF export feature for fun.
https://github.com/ShiningForceCentral/ ... ses/latest
Also included in SF2DISASM now, in the intended folder : disasm\data\graphics\battles\battlesprites\.
Feedback is welcome, please tell me if anything is unclear or wrong.
-
Diego_DidakusShining Hero
- Posts: 615
- Joined: Wed May 05 2010 2:48pm
- Status: Offline
Re: SF2 Disassembly Tool Suite
This frame for starting spell actually works? I see the logic here but I think in game the spell animation is always the same as attack animation.
Check out my projects: https://quasarcorpsgame.com.br/
Speaking...tires me.
Fighting...tires me
I'm tired.
Speaking...tires me.
Fighting...tires me
I'm tired.
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Indeed the game seems to use the same battlesprite attack animation for a simple attack or a spell cast.
I believe it may be a matter of context :
- if it's an attack, then ignore spell-related properties.
- if it's a spell (or a special attack, I guess), then apply spell properties.
But I'll have to look further into it, I still don't know where the animations are linked to ally/enemy data.
EDIT :
New release with enemy support :
https://github.com/ShiningForceCentral/ ... /tag/1.1.0
Also included in SF2DISASM's last revision.
That should be enough for this tool now, I'll check what else I can do in terms of graphics-related tools before switching to map-related work.
I believe it may be a matter of context :
- if it's an attack, then ignore spell-related properties.
- if it's a spell (or a special attack, I guess), then apply spell properties.
But I'll have to look further into it, I still don't know where the animations are linked to ally/enemy data.
EDIT :
New release with enemy support :
https://github.com/ShiningForceCentral/ ... /tag/1.1.0
Also included in SF2DISASM's last revision.
That should be enough for this tool now, I'll check what else I can do in terms of graphics-related tools before switching to map-related work.
-
MXC1090
- Posts: 27345
- Joined: Fri Sep 17 2004 1:48am
- Status: Offline
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Thanks MXC !
And quick news just to let you guys know that I'm making progress in the map department :
http://img110.xooimage.com/files/6/f/d/ ... 3798a2.png
Blocks and map layouts (with exploration flags) can now be decompressed and recompressed properly, so the technical ground is here and waiting to be used to its full potential with a proper GUI editor.
So I think the next step now is for me to literally copy BNC's nice map layout editor from The Caravan.
EDIT 24/11 :
Basic editor features are implemented :
- Similar to The Caravan, left and right clicks act as block slots taken from the blockset and applied to the map.
- Middle click on the map allows to copy selected map block's graphics AND flags (obstructed, stairs, warp ...)
- Undo button which is quite convenient, I hope to find the way to implement a ctrl+z shortcut ASAP.
This is already a lot of fun to play with and I can't wait to release something with every flags managed properly !
And quick news just to let you guys know that I'm making progress in the map department :
http://img110.xooimage.com/files/6/f/d/ ... 3798a2.png
Blocks and map layouts (with exploration flags) can now be decompressed and recompressed properly, so the technical ground is here and waiting to be used to its full potential with a proper GUI editor.
So I think the next step now is for me to literally copy BNC's nice map layout editor from The Caravan.
EDIT 24/11 :
Basic editor features are implemented :
- Similar to The Caravan, left and right clicks act as block slots taken from the blockset and applied to the map.
- Middle click on the map allows to copy selected map block's graphics AND flags (obstructed, stairs, warp ...)
- Undo button which is quite convenient, I hope to find the way to implement a ctrl+z shortcut ASAP.
This is already a lot of fun to play with and I can't wait to release something with every flags managed properly !
-
greyskiesShining Member
- Posts: 438
- Joined: Wed Feb 02 2011 11:55am
- Location: Seebenstein, Austria
- Status: Offline
Re: SF2 Disassembly Tool Suite
Yes yes yes! This is looking great!
.
Check out Return to Grans - A Shining Force II hack which features a completely
reworked story, numerous visual improvements, and tons of balance changes.
Also available as storymode hack only.
Check out Return to Grans - A Shining Force II hack which features a completely
reworked story, numerous visual improvements, and tons of balance changes.
Also available as storymode hack only.
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Here it is, first map-related tool for SF2 Disassemblies : SF2MapLayoutManager-1.0.0 !
https://github.com/ShiningForceCentral/ ... /tag/1.0.0
This may not mean much to anybody since The Caravan already does all that, but considering this relies on 3 compression schemes at the same time (graphics, blockset and layout), I'm really proud and relieved to have achieved those technical steps, with a lot of future tools which will benefit from it.
I included a little "Help" section inside, this time. Here's the current explanation :
This is a lot of fun to use, especially with the "section copy" feature when you drag and release the middle-click button.
EDIT : I'm still struggling with my shitty Java GUI coding skills so only the "Undo" button works at the moment, no "Ctrl+Z" shortcut yet I'm afraid.
This release is included in SF2DISASM's last revision in disasm\data\maps\. (Download link)
Please, play with it and tell me if anything goes wrong.
Any feedback will be appreciated !
https://github.com/ShiningForceCentral/ ... /tag/1.0.0
This may not mean much to anybody since The Caravan already does all that, but considering this relies on 3 compression schemes at the same time (graphics, blockset and layout), I'm really proud and relieved to have achieved those technical steps, with a lot of future tools which will benefit from it.
I included a little "Help" section inside, this time. Here's the current explanation :
Spoiler
- Blockset panel :
Left-Click or Right-Click to copy block graphics from blockset.
- Map :
- Block mode :
- Left-Click or Right-Click to apply copied block.
- Middle-Click to copy map block graphics AND exploration flags.
Then apply with left click.
- Middle-Click drag and release to copy rectangular zone.
Then use left click to apply.
- Exploration flags mode :
- Obstructed block flag :
Left click to make block obstructed.
Middle and right clicks to remove flag.
- Stairs flags :
Left click for upstairs going left.
Right click for upstairs going right.
Middle click to remove flag.
This tool only takes care of exploration flags.
Action flags are ignored and left as is for other specific tools to handle them.
Left-Click or Right-Click to copy block graphics from blockset.
- Map :
- Block mode :
- Left-Click or Right-Click to apply copied block.
- Middle-Click to copy map block graphics AND exploration flags.
Then apply with left click.
- Middle-Click drag and release to copy rectangular zone.
Then use left click to apply.
- Exploration flags mode :
- Obstructed block flag :
Left click to make block obstructed.
Middle and right clicks to remove flag.
- Stairs flags :
Left click for upstairs going left.
Right click for upstairs going right.
Middle click to remove flag.
This tool only takes care of exploration flags.
Action flags are ignored and left as is for other specific tools to handle them.
EDIT : I'm still struggling with my shitty Java GUI coding skills so only the "Undo" button works at the moment, no "Ctrl+Z" shortcut yet I'm afraid.
This release is included in SF2DISASM's last revision in disasm\data\maps\. (Download link)
Please, play with it and tell me if anything goes wrong.
Any feedback will be appreciated !
-
CorsairShining Legend
- Posts: 7336
- Joined: Mon Apr 21 2008 2:52am
- Status: Offline
Re: SF2 Disassembly Tool Suite
Any idea if it'll handle the maps that, if edited in caravan make the game screwy?
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Theoretically there should be no problem as these bugs were specific to The Caravan, I believe.
Let's have fun and make some checks !
Reminder of Stordarth's great research :
So according to Stor's summary :
1. Modified map 65 (intro cutscene castle map) with no problem : 2. Modified secret village map 23 ... and export crashes ! Woah
From a first quick analysis, it looks like this map's blockset has some blocks which point to a VDP tile outside from the map tilesets range ! It actually points to the last tile of the game's base tileset, just before the beginning of map tilesets, hence the "-1" value which neither The Caravan or SF2MapBlockManager could process properly.
Even without modification, producing the original blockset crashes.
I'll just make my code more secure for the moment, let's see ... OK, quick-fixed, I could save and re-open some edits making secret places more accessible.
I didn't test it ingame though, as I don't know how to visit the secret village quickly. Any suggestion is welcome !
3. Editing, saving map 25 and re-opening it works with no problem, though I can't quickly access Ketto to verify in game.
4. Same for map 38 which was ok with my edits, save and re-open.
Looks like all is OK now, I'll release a new version 1.0.1.
Let me know if something else is wrong with map 23, as I really don't know why such blocks would have any good reason to point to that empty last tile from the base tileset, and my quick-fix might not be the most robust solution to handle this map's particularities.
1.0.1 : https://github.com/ShiningForceCentral/ ... /tag/1.0.1
SF2DISASM also updated.
Thanks for the good question, Corsair.
EDIT :
I opened/edited/saved more than 25 maps and discovered a similar bug that I fixed.
I also decided to change the way input paths are organized to avoid having to input the same map id several times when all you need is to put it once and work in that same directory for everything. Now this is quite simple and efficient.
I built an expanded ROM with all the new maps, and everything seems to work like a charm, though I could only go check maps which are quickly available at the beginning of the game.
Hence, new release 1.1.0 !
https://github.com/ShiningForceCentral/ ... /tag/1.1.0
EDIT : Tested on real hardware, no problem.
Next test : edit first battle map and see if Caravan still allows to edit the battle properly.
EDIT : It works ! The Caravan is able to edit battles of a disassembly build !
BNC, if you read this, well done for making The Caravan dynamic enough for such use case. EDIT :
Fixed and polished file path management to process both absolute and relative paths seamlessly.
https://github.com/ShiningForceCentral/ ... /tag/1.1.1
EDIT 07/12 :
I'm now making progress on SF2MapEditor which should allow to edit anything from the map entry structure : layout, exploration, block copies, items and animations.
Only items and animations remain to be implemented before I make my first release, hopefully in a few days.
Let's have fun and make some checks !
Reminder of Stordarth's great research :
Spoiler
Map Definitions Issues
1. Editing/Saving corrupts the block arrangements in certain maps:
Tested in both the hacked and a fresh SF2 rom. Same result.
Despite other maps using the same tilesets, these maps seem to save normally. No error message is ever given regarding this.
2. Opening: Opening some edited maps after saving gives this error:
Traceback (most recent call last):
File "layouttree.pyc", line 266, in OnActivateTreeItem
File "maps.pyc", line 1650, in changeMap
File "rom.pyc", line 1103, in getMaps
File "rom.pyc", line 1251, in mapSubroutine
IndexError: list index out of range
3. Save Process: Saving some maps gives the following error:
Traceback (most recent call last):
File "caravan.py", line 845, in OnSave
File "caravan.py", line 1047, in saveFile
File "rom.pyc", line 2935, in writeAllData
File "rom.pyc", line 3347, in writeMaps
File "rom.pyc", line 2773, in writeBytes
TypeError: Odd-length string
4. Save Process: Saving some maps instead gives this error:
Traceback (most recent call last):
File "caravan.py", line 845, in OnSave
File "caravan.py", line 1047, in saveFile
File "rom.pyc", line 2935, in writeAllData
File "rom.pyc", line 3323, in writeMaps
File "rom.pyc", line 2869, in reformDataSection
File "data.pyc", line 76, in raw_hexlify
File "data.pyc", line 637, in hexlify
File "data.pyc", line 676, in
ValueError: max() arg is an empty sequence
After testing all maps, here is the summary:
1. Block Glitches after saving: 17, 19, 20, 33, 40, 47, 62, 65, 66, 74
2. Traceback Error from above: 4, 7, 10, 23, 24*, 46*
3. Maps that do not save after: 25
4. Maps that do not save either: 38, 39, 53, 78
*Gave error without actually being edited. In a fresh rom, open normally. Keyed to a different map that was previously edited possibly?
Bad maps: 4, 7, 10, 17, 19, 20, 23, 24, 25, 33, 38, 39, 40, 46, 47, 53, 62, 65, 66, 74, 78.
Usable Maps: 0, 1, 2, 3, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77.
1. Editing/Saving corrupts the block arrangements in certain maps:
Tested in both the hacked and a fresh SF2 rom. Same result.
Despite other maps using the same tilesets, these maps seem to save normally. No error message is ever given regarding this.
2. Opening: Opening some edited maps after saving gives this error:
Traceback (most recent call last):
File "layouttree.pyc", line 266, in OnActivateTreeItem
File "maps.pyc", line 1650, in changeMap
File "rom.pyc", line 1103, in getMaps
File "rom.pyc", line 1251, in mapSubroutine
IndexError: list index out of range
3. Save Process: Saving some maps gives the following error:
Traceback (most recent call last):
File "caravan.py", line 845, in OnSave
File "caravan.py", line 1047, in saveFile
File "rom.pyc", line 2935, in writeAllData
File "rom.pyc", line 3347, in writeMaps
File "rom.pyc", line 2773, in writeBytes
TypeError: Odd-length string
4. Save Process: Saving some maps instead gives this error:
Traceback (most recent call last):
File "caravan.py", line 845, in OnSave
File "caravan.py", line 1047, in saveFile
File "rom.pyc", line 2935, in writeAllData
File "rom.pyc", line 3323, in writeMaps
File "rom.pyc", line 2869, in reformDataSection
File "data.pyc", line 76, in raw_hexlify
File "data.pyc", line 637, in hexlify
File "data.pyc", line 676, in
ValueError: max() arg is an empty sequence
After testing all maps, here is the summary:
1. Block Glitches after saving: 17, 19, 20, 33, 40, 47, 62, 65, 66, 74
2. Traceback Error from above: 4, 7, 10, 23, 24*, 46*
3. Maps that do not save after: 25
4. Maps that do not save either: 38, 39, 53, 78
*Gave error without actually being edited. In a fresh rom, open normally. Keyed to a different map that was previously edited possibly?
Bad maps: 4, 7, 10, 17, 19, 20, 23, 24, 25, 33, 38, 39, 40, 46, 47, 53, 62, 65, 66, 74, 78.
Usable Maps: 0, 1, 2, 3, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 41, 42, 43, 44, 45, 48, 49, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 63, 64, 67, 68, 69, 70, 71, 72, 73, 75, 76, 77.
1. Modified map 65 (intro cutscene castle map) with no problem : 2. Modified secret village map 23 ... and export crashes ! Woah
From a first quick analysis, it looks like this map's blockset has some blocks which point to a VDP tile outside from the map tilesets range ! It actually points to the last tile of the game's base tileset, just before the beginning of map tilesets, hence the "-1" value which neither The Caravan or SF2MapBlockManager could process properly.
Even without modification, producing the original blockset crashes.
I'll just make my code more secure for the moment, let's see ... OK, quick-fixed, I could save and re-open some edits making secret places more accessible.
I didn't test it ingame though, as I don't know how to visit the secret village quickly. Any suggestion is welcome !
Spoiler
4. Same for map 38 which was ok with my edits, save and re-open.
Looks like all is OK now, I'll release a new version 1.0.1.
Let me know if something else is wrong with map 23, as I really don't know why such blocks would have any good reason to point to that empty last tile from the base tileset, and my quick-fix might not be the most robust solution to handle this map's particularities.
1.0.1 : https://github.com/ShiningForceCentral/ ... /tag/1.0.1
SF2DISASM also updated.
Thanks for the good question, Corsair.
EDIT :
I opened/edited/saved more than 25 maps and discovered a similar bug that I fixed.
I also decided to change the way input paths are organized to avoid having to input the same map id several times when all you need is to put it once and work in that same directory for everything. Now this is quite simple and efficient.
I built an expanded ROM with all the new maps, and everything seems to work like a charm, though I could only go check maps which are quickly available at the beginning of the game.
Hence, new release 1.1.0 !
https://github.com/ShiningForceCentral/ ... /tag/1.1.0
EDIT : Tested on real hardware, no problem.
Next test : edit first battle map and see if Caravan still allows to edit the battle properly.
EDIT : It works ! The Caravan is able to edit battles of a disassembly build !
BNC, if you read this, well done for making The Caravan dynamic enough for such use case. EDIT :
Fixed and polished file path management to process both absolute and relative paths seamlessly.
https://github.com/ShiningForceCentral/ ... /tag/1.1.1
EDIT 07/12 :
I'm now making progress on SF2MapEditor which should allow to edit anything from the map entry structure : layout, exploration, block copies, items and animations.
Only items and animations remain to be implemented before I make my first release, hopefully in a few days.
-
MXC1090
- Posts: 27345
- Joined: Fri Sep 17 2004 1:48am
- Status: Offline
Re: SF2 Disassembly Tool Suite
Don't forget that you can bump this topic after 24 hours of no additional response (you won't be able to again until someone else posts though) or that you can send me a Slack message to bump this thread
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Thank you for the tip MXC, I didn't know that !
Well, that should do for the moment with SF2MapEditor, I believe it to be operational-enough for me to share it and wait for possible bug-reports while I think about what to do next.
So here it is, release 1.0.0 !
https://github.com/ShiningForceCentral/ ... /tag/1.0.0
As usual, also included in SF2DISASM's last revision :
https://github.com/ShiningForceCentral/ ... master.zip
I find it quite fun to use and I hope to have some feedback to make sure this is properly working for everybody.
Well, that should do for the moment with SF2MapEditor, I believe it to be operational-enough for me to share it and wait for possible bug-reports while I think about what to do next.
So here it is, release 1.0.0 !
https://github.com/ShiningForceCentral/ ... /tag/1.0.0
As usual, also included in SF2DISASM's last revision :
https://github.com/ShiningForceCentral/ ... master.zip
I find it quite fun to use and I hope to have some feedback to make sure this is properly working for everybody.
-
greyskiesShining Member
- Posts: 438
- Joined: Wed Feb 02 2011 11:55am
- Location: Seebenstein, Austria
- Status: Offline
Re: SF2 Disassembly Tool Suite
I will definitely try this out as soon as I've got some free time!
.
Check out Return to Grans - A Shining Force II hack which features a completely
reworked story, numerous visual improvements, and tons of balance changes.
Also available as storymode hack only.
Check out Return to Grans - A Shining Force II hack which features a completely
reworked story, numerous visual improvements, and tons of balance changes.
Also available as storymode hack only.
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Quick update to say that most of the graphics-related tools now support GIF format, along with PNG.
My own experimentations made me realize that while editing existing graphics could be quite simple (export, edit, import), importing brand new images can be really tricky, mostly because of one constraint : color index 0 must be kept for transparency only.
It looks like most image editing software don't care that much about giving control on that aspect, and PNG-8 (i.e. with indexed colors) seem to have not so much support compared to GIF, which has indexed colors by definition.
So yeah, even though PNG-8 is considered as the recommended format in general, GIF may still be a little more convenient to use, and BNC was absolutely right to keep using this format in the Caravan.
As usual, SF2DISASM has been updated with latest versions of all updated tools.
My own experimentations made me realize that while editing existing graphics could be quite simple (export, edit, import), importing brand new images can be really tricky, mostly because of one constraint : color index 0 must be kept for transparency only.
It looks like most image editing software don't care that much about giving control on that aspect, and PNG-8 (i.e. with indexed colors) seem to have not so much support compared to GIF, which has indexed colors by definition.
So yeah, even though PNG-8 is considered as the recommended format in general, GIF may still be a little more convenient to use, and BNC was absolutely right to keep using this format in the Caravan.
As usual, SF2DISASM has been updated with latest versions of all updated tools.
The SF2 Disassembly Super Thread / sf2hack Discord / Currently not available for tech support (sorry!)
-
xenometalShining Member
- Posts: 439
- Joined: Tue Mar 28 2006 3:05am
- Location: Canada
- Status: Offline
Re: SF2 Disassembly Tool Suite
I get an error when building the latest version.
Code: Select all
SN 68k version 2.53
D:\SF2DISASM-MASTER\DISASM\DATA\GRAPHICS\PORTRAITS\ENTRIES.ASM(77) : Error : Could not open file 'data/graphics/portraits/newportrait17.bin'
portrait17: incbin 'data/graphics/portraits/newportrait17.bin'
Errors during pass 1 - pass 2 aborted
Assembly completed.
1 error(s) from 228389 lines in 0.33 seconds
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Woah, sorry for that, and thank you for the feedback ! I just pushed the fix.
My working directory is a constant mess with experimentations here and there, and I may push wrong stuff from time to time without noticing ... so I really appreciate feedback if anything wrong happens or even simply if the 2MB build isn't bit-perfect !
I can't even check the bit-perfect build properly right now I'm afraid (yeah I don't even use branches, I'm a lazy Git user ! I really should start using that), so I hope that'll do the trick !
UPDATE :
Here's SF2BattleEditor-1.0.0 :
You can edit :
- Basic map coordinates : map index, camera boundaries etc.
- Terrain data
- Ally and enemy spritesets along with AI regions and AI points.
Please note :
- Depending on your hardware, loading data can take a VERY LONG time, with the "Import" button stuck until everything is loaded. This is mainly because ALL mapsprites are pre-loaded. If this is really a problem for some people, please tell me and I'll work on optimizing this.
- Some parts of enemy data (including AI region types) still have to be properly labelled, formatted, or even just figured out first. Any help on understanding all of enemy data is welcome !
- Neutral entities cannot be edited from this tool. I may work on it but for the moment, editing the dedicated ASM file will do. (disasm/data/battles/global/battleneutralentities.asm)
- This first version's ergonomics are rough, editing stuff may be too tedious as is. I can't spend too much time on making this easy and funny to play with, so that will do the job for now, but any suggestion about reasonable ergonomic features will be taken into consideration.
As usual, this is now available in SF2DISASM, in the "disasm/data/battles/" directory.
EDIT : Cannot bump the thread myself anymore, please someone post something !
Music Banks are now parsed into ASM macros to describe the music commands :
https://github.com/ShiningForceCentral/ ... musicbank0
I made a conversion tool to import music from shiru's VGM Music Maker's "TXT export" feature.
You can find it here : disasm/data/sound/SF2SoundTools-1.0.0.jar, and you can execute it properly with vgmmmtxtimport.bat.
So you can now compose new music and import it into an existing music bank, if you make enough place for it.
This conversion doesn't make any kind of space usage optimization though, so a good knowledge of how tracker music patterns work, and a good knowledge of the sound driver's music format, are required to replace repeated patterns with appropriate loops.
Here are the YM instrument bank and PCM bank you can use in VGM MM :
http://shrubbery.free.fr/sf2hack/sf2dis ... mmmsf2.zip
My working directory is a constant mess with experimentations here and there, and I may push wrong stuff from time to time without noticing ... so I really appreciate feedback if anything wrong happens or even simply if the 2MB build isn't bit-perfect !
I can't even check the bit-perfect build properly right now I'm afraid (yeah I don't even use branches, I'm a lazy Git user ! I really should start using that), so I hope that'll do the trick !
UPDATE :
Here's SF2BattleEditor-1.0.0 :
You can edit :
- Basic map coordinates : map index, camera boundaries etc.
- Terrain data
- Ally and enemy spritesets along with AI regions and AI points.
Please note :
- Depending on your hardware, loading data can take a VERY LONG time, with the "Import" button stuck until everything is loaded. This is mainly because ALL mapsprites are pre-loaded. If this is really a problem for some people, please tell me and I'll work on optimizing this.
- Some parts of enemy data (including AI region types) still have to be properly labelled, formatted, or even just figured out first. Any help on understanding all of enemy data is welcome !
- Neutral entities cannot be edited from this tool. I may work on it but for the moment, editing the dedicated ASM file will do. (disasm/data/battles/global/battleneutralentities.asm)
- This first version's ergonomics are rough, editing stuff may be too tedious as is. I can't spend too much time on making this easy and funny to play with, so that will do the job for now, but any suggestion about reasonable ergonomic features will be taken into consideration.
As usual, this is now available in SF2DISASM, in the "disasm/data/battles/" directory.
EDIT : Cannot bump the thread myself anymore, please someone post something !
Music Banks are now parsed into ASM macros to describe the music commands :
https://github.com/ShiningForceCentral/ ... musicbank0
Code: Select all
; ASM FILE music01.asm :
; 0x89C9..0x9FA9 : Music 01
Music_1: db 0
db 0
db 0
db 0C2h
dw Music_1_Channel_0
dw Music_1_Channel_1
dw Music_1_Channel_2
dw Music_1_Channel_3
dw Music_1_Channel_4
dw Music_1_Channel_5
dw Music_1_Channel_6
dw Music_1_Channel_7
dw Music_1_Channel_9
dw Music_1_Channel_9
Music_1_Channel_0:
stereo 0C0h
setRelease 01h
vibrato 02Ch
waitL 21
mainLoopStart
repeatStart
inst 13
vol 0Ch
noteL D6,30
vol 09h
noteL D6,6
vol 0Ch
note D6
note D6
note Ds6
vol 09h
note Ds6
vol 0Ch
noteL Ds6,18
vol 09h
noteL Ds6,6
vol 0Ch
note Ds6
vol 09h
note Ds6
vol 0Ch
repeatSection1Start
noteL C6,6
vol 09h
note C6
vol 0Ch
noteL C6,18
vol 09h
noteL C6,6
vol 0Ch
note C6
vol 09h
note C6
vol 0Ch
note F6
vol 09h
note F6
vol 0Ch
noteL F6,30
vol 09h
noteL F6,6
repeatEnd
repeatSection2Start
noteL C6,6
vol 09h
note C6
vol 0Ch
note C6
vol 09h
note C6
vol 07h
note C6
vol 05h
note C6
vol 0Ch
noteL F6,60
vol 09h
noteL F6,6
vol 07h
note F6
inst 27
vol 0Ah
noteL A4,12
noteL As4,6
wait
note F5
wait
noteL E5,36
noteL C5,6
wait
note D5
wait
noteL A5,24
noteL G5,6
wait
note E5
wait
note C5
wait
noteL D5,24
waitL 12
note A4
noteL As4,6
wait
note F5
wait
note E5
wait
noteL C5,12
noteL D5,6
wait
note A5
wait
noteL C6,36
noteL G5,6
wait
noteL F5,48
waitL 12
inst 26
vol 0Dh
note D5
note Ds5
note As5
noteL A5,36
noteL G5,12
note F5
noteL C6,24
noteL As5,12
noteL A5,16
note G5
note A5
countedLoopStart 1
noteL As5,36
noteL Gs5,6
note Fs5
countedLoopEnd
noteL As5,48
note C6
vol 0Ah
noteL C6,6
vol 06h
note C6
inst 13
vol 0Ch
noteL A5,12
noteL As5,6
vol 09h
note As5
vol 0Ch
note F6
vol 09h
note F6
vol 0Ch
noteL E6,36
noteL C6,6
vol 09h
note C6
vol 0Ch
note D6
vol 09h
note D6
vol 0Ch
noteL A6,24
noteL G6,6
vol 09h
note G6
vol 0Ch
note E6
vol 09h
note E6
vol 0Ch
note C6
vol 09h
note C6
vol 0Ch
noteL D6,24
vol 09h
noteL D6,6
vol 07h
note D6
vol 0Ch
noteL A5,12
noteL As5,6
vol 09h
note As5
vol 0Ch
note F6
vol 09h
note F6
vol 0Ch
note E6
vol 09h
note E6
vol 0Ch
noteL C6,12
noteL D6,6
vol 09h
note D6
vol 0Ch
note A6
vol 09h
note A6
vol 0Ch
noteL C7,36
noteL G6,6
vol 09h
note G6
vol 0Ch
noteL F6,30
vol 09h
noteL F6,6
inst 26
vol 0Ch
note A6
vol 08h
note A6
vol 0Ch
noteL A6,12
note G6
note A6
noteL As6,24
noteL A6,12
note F6
note G6
note As5
vol 08h
noteL As5,6
vol 0Ch
note C6
noteL C6,60
noteL C6,6
note As5
vol 08h
note As5
vol 06h
note As5
vol 0Dh
noteL A5,12
note As5
noteL F6,18
vol 09h
noteL F6,6
vol 0Dh
noteL C6,12
note D6
noteL A6,18
vol 09h
noteL A6,6
vol 0Dh
noteL D6,12
note Ds6
noteL D7,24
note C7
vol 09h
noteL C7,12
vol 05h
note C7
inst 27
vol 0Ah
note Cs6
noteL C6,6
wait
note G5
wait
note Gs5
wait
noteL Ds5,24
noteL F5,6
wait
noteL As4,72
noteL A4,24
waitL 12
note G4
noteL Gs4,6
wait
note F5
wait
note Ds5
wait
noteL As4,24
noteL C5,6
wait
noteL Gs5,72
noteL Fs5,24
waitL 12
inst 56
vol 0Ch
note B5
noteL As5,6
vol 09h
note As5
vol 0Ch
note F5
vol 09h
note F5
vol 0Ch
note Fs5
vol 09h
note Fs5
vol 0Ch
noteL D5,24
noteL Ds5,6
vol 09h
note Ds5
vol 0Ch
noteL As4,72
noteL Gs4,24
vol 09h
noteL Gs4,6
vol 07h
note Gs4
vol 0Ch
noteL E5,12
noteL Fs5,6
vol 09h
note Fs5
vol 0Ch
noteL Cs6,18
vol 09h
noteL Cs6,6
vol 0Ch
noteL A5,12
noteL B5,6
vol 09h
note B5
vol 0Ch
noteL Fs6,18
vol 09h
noteL Fs6,6
vol 0Ch
note B5
vol 09h
note B5
vol 0Ch
noteL Fs6,18
noteL B5,6
noteL Fs6,36
noteL E6,6
vol 09h
note E6
inst 13
vol 0Ch
noteL Fs5,30
vol 09h
noteL Fs5,6
vol 0Ch
note Fs5
note Fs5
note Gs5
vol 09h
note Gs5
vol 0Ch
noteL Gs5,18
vol 09h
noteL Gs5,6
vol 0Ch
note Gs5
vol 09h
note Gs5
vol 0Ch
noteL A5,84
vol 09h
noteL A5,6
vol 07h
note A5
vol 0Ch
noteL A5,30
vol 09h
noteL A5,6
vol 0Ch
note A5
note A5
note B5
vol 09h
note B5
vol 0Ch
noteL B5,18
vol 09h
noteL B5,6
vol 0Ch
note B5
vol 09h
note B5
vol 0Ch
noteL Cs6,84
vol 09h
noteL Cs6,6
vol 07h
note Cs6
inst 45
countedLoopStart 1
vol 0Ch
noteL Cs6,6
note B5
note Fs5
note B5
note Fs6
vol 08h
note Fs6
countedLoopEnd
vol 0Ch
noteL Cs6,6
note B5
countedLoopStart 1
vol 0Ch
noteL Cs6,6
note B5
note E5
note A5
note Fs6
vol 08h
note Fs6
countedLoopEnd
vol 0Ch
noteL Cs6,6
note B5
countedLoopStart 1
vol 0Ch
noteL Cs6,6
note B5
note Fs5
note D6
note Fs6
vol 08h
note Fs6
countedLoopEnd
vol 0Ch
noteL D6,6
note Fs6
note Gs6
note Fs6
note Gs6
note Cs7
note Cs6
vol 08h
note Cs6
vol 0Ch
note Fs6
note E6
note B5
vol 08h
note B5
vol 0Ch
note D6
note Cs6
note B5
note A5
note E5
note A5
inst 26
countedLoopStart 1
vol 0Bh
noteL Cs6,6
note B5
note Fs5
note B5
note Fs6
vol 07h
note Fs6
countedLoopEnd
vol 0Bh
noteL Cs6,6
note B5
countedLoopStart 1
vol 0Bh
noteL Cs6,6
note B5
note E5
note A5
note Fs6
vol 07h
note Fs6
countedLoopEnd
vol 0Bh
noteL Cs6,6
note B5
countedLoopStart 1
vol 0Bh
noteL Cs6,6
note B5
note Fs5
note D6
note Fs6
vol 07h
note Fs6
countedLoopEnd
vol 0Bh
noteL D6,6
note Fs6
note Gs6
note Fs6
note Gs6
note Cs7
note Cs6
vol 07h
note Cs6
vol 0Bh
note Fs6
note E6
note B5
vol 07h
note B5
vol 0Bh
note E6
note D6
note C6
note As5
note Gs5
note As5
note B5
note Cs6
note Ds6
note F6
note Fs6
note Gs6
note As6
note B6
repeatStart
inst 13
vol 0Ch
noteL Cs6,6
note Cs6
note Cs6
vol 09h
note Cs6
inst 27
vol 0Ah
repeatSection1Start
noteL Cs5,8
waitL 4
note C5
setRelease 04h
noteL C5,8
note C5
note As4
note Gs4
setRelease 01h
noteL As4,24
repeatEnd
repeatSection2Start
noteL Fs5,8
waitL 4
note F5
setRelease 04h
noteL F5,8
note F5
note Ds5
note Cs5
setRelease 01h
noteL Ds5,24
inst 13
vol 0Ch
noteL Cs6,30
vol 09h
noteL Cs6,6
vol 0Ch
note Cs6
note Cs6
noteL Cs6,8
vol 09h
note Cs6
vol 0Ch
note Cs6
vol 09h
note Cs6
vol 0Ch
note Cs6
vol 09h
note Cs6
waitL 12
inst 27
vol 0Ah
note Fs4
noteL Gs4,6
wait
note F5
wait
note Ds5
wait
noteL As4,12
noteL C5,6
waitL 12
noteL Gs5,6
noteL Fs5,96
mainLoopEnd
Music_1_Channel_1:
stereo 0C0h
setRelease 01h
vibrato 02Ch
waitL 21
mainLoopStart
waitL 24
inst 3
vol 0Ch
note As2
wait
note F2
wait
note Cs3
wait
noteL Fs2,6
wait
noteL B2,12
waitL 24
note As2
wait
note F2
noteL Fs2,6
wait
note Fs2
waitL 18
noteL B2,60
countedLoopStart 1
noteL As2,6
wait
note As2
waitL 18
noteL As2,6
waitL 18
noteL As2,6
waitL 18
noteL As2,6
note As2
countedLoopEnd
noteL As2,6
wait
note As2
waitL 18
noteL As2,6
waitL 18
noteL As2,6
wait
noteL As2,24
noteL A2,6
wait
note A2
waitL 18
noteL A2,6
note A2
note D3
wait
note A2
wait
noteL D3,24
noteL C3,6
wait
note C3
waitL 18
noteL C3,6
waitL 18
noteL C3,6
waitL 18
noteL C3,6
note C3
note As2
wait
note As2
waitL 18
noteL As2,6
wait
note As2
wait
note As2
wait
noteL As2,24
noteL Gs2,48
note E3
note F3
note F2
countedLoopStart 1
noteL As2,6
wait
note As2
waitL 18
noteL As2,6
waitL 18
noteL As2,6
waitL 18
noteL As2,6
note As2
countedLoopEnd
noteL As2,6
wait
note As2
waitL 18
noteL As2,6
waitL 18
noteL As2,6
waitL 18
noteL As2,6
wait
note A2
wait
note A2
waitL 18
noteL A2,6
wait
note D3
wait
note A2
wait
noteL D3,24
noteL Ds3,6
wait
note Ds3
waitL 18
noteL Ds3,6
waitL 18
noteL Ds3,6
waitL 18
noteL Ds3,6
note Ds3
note Gs2
wait
note Gs2
waitL 18
noteL Gs2,6
waitL 18
noteL Gs2,6
wait
noteL Gs2,24
noteL G2,30
waitL 6
note G2
wait
noteL D3,30
waitL 6
note D3
wait
noteL Ds3,30
waitL 6
note Ds3
wait
note Gs2
wait
inst 38
vol 0Ch
noteL Gs3,12
note Fs3
note Ds3
noteL Cs3,72
noteL Ds3,12
note F3
noteL Fs3,60
noteL Gs3,24
noteL Fs3,12
noteL Cs3,72
noteL Ds3,12
note F3
noteL Fs3,60
noteL Gs3,24
noteL As3,12
noteL B3,72
noteL Cs3,12
note Ds3
noteL E3,72
noteL Fs3,12
note E3
noteL D3,48
note G3
note C3
note F3
inst 3
vol 0Ch
waitL 24
note B2
wait
note A2
setRelease 08h
noteL G2,12
note A2
note B2
note Cs3
note D3
note E3
note Fs3
note G3
setRelease 01h
waitL 24
note D3
wait
note Cs3
setRelease 08h
noteL B2,12
note Cs3
note Ds3
note E3
note Fs3
note Gs3
note As3
note B3
setRelease 01h
inst 56
vol 0Ch
noteL D4,60
vol 09h
noteL D4,12
vol 0Ch
noteL D4,6
note D4
noteL Cs4,60
vol 09h
noteL Cs4,12
vol 0Ch
noteL Cs4,6
vol 09h
note Cs4
vol 0Ch
noteL Gs4,60
vol 09h
noteL Gs4,12
vol 0Ch
noteL Gs4,6
note Gs4
noteL A4,72
setRelease 08h
inst 3
vol 0Ch
noteL A3,12
note E3
note D3
note D3
wait
note D3
wait
note D3
note D3
note Cs3
note Cs3
wait
note Cs3
wait
note Cs3
note Cs3
note Gs3
note Gs3
wait
note Gs3
wait
note Gs3
note Gs3
note A2
note A3
note G2
note G3
note F2
note F3
note Ds2
note Ds3
setRelease 01h
noteL Cs3,48
countedLoopStart 1
noteL B2,6
note B2
note B2
waitL 78
countedLoopEnd
noteL E2,48
noteL Fs2,8
wait
note Fs2
wait
note Fs2
waitL 32
noteL Gs2,168
mainLoopEnd
Music_1_Channel_2:
stereo 0C0h
setRelease 01h
vibrato 02Ch
waitL 21
mainLoopStart
repeatStart
inst 13
vol 0Bh
noteL C6,30
vol 08h
noteL C6,6
vol 0Bh
note C6
note C6
note As5
vol 08h
note As5
vol 0Bh
noteL As5,18
vol 08h
noteL As5,6
vol 0Bh
note As5
vol 08h
note As5
vol 0Bh
repeatSection1Start
noteL Gs5,6
vol 08h
note Gs5
vol 0Bh
noteL Gs5,18
vol 08h
noteL Gs5,6
vol 0Bh
note Gs5
vol 08h
note Gs5
vol 0Bh
note As5
vol 08h
note As5
vol 0Bh
noteL As5,30
vol 08h
noteL As5,6
repeatEnd
repeatSection2Start
noteL Gs5,6
vol 08h
note Gs5
vol 0Bh
note Gs5
vol 08h
note Gs5
vol 06h
note Gs5
vol 04h
note Gs5
vol 0Bh
noteL As5,36
noteL Gs5,24
vol 0Ah
noteL F6,6
vol 07h
note F6
countedLoopStart 2
vol 0Ah
noteL F6,6
vol 07h
note F6
waitL 12
countedLoopEnd
vol 0Ah
noteL F6,6
note F6
note G6
vol 07h
note G6
countedLoopStart 2
vol 0Ah
noteL G6,6
vol 07h
note G6
waitL 12
countedLoopEnd
vol 0Ah
noteL G6,6
note G6
note F6
vol 07h
note F6
countedLoopStart 1
vol 0Ah
noteL F6,6
vol 07h
note F6
waitL 12
countedLoopEnd
vol 0Ah
noteL F6,6
vol 07h
note F6
vol 0Ah
noteL G6,24
vol 0Ah
noteL E6,6
vol 07h
note E6
vol 0Ah
note E6
vol 07h
note E6
waitL 12
vol 0Ah
noteL E6,6
note E6
note F6
vol 07h
note F6
vol 0Ah
note F6
vol 07h
note F6
vol 0Ah
noteL F6,24
inst 44
vol 0Ah
noteL G6,6
vol 07h
note G6
countedLoopStart 2
vol 0Ah
noteL G6,6
vol 07h
note G6
waitL 12
countedLoopEnd
vol 0Ah
noteL G6,6
note G6
note A6
vol 07h
note A6
vol 0Bh
note A6
vol 07h
note A6
waitL 12
vol 0Bh
noteL A6,6
vol 07h
note A6
countedLoopStart 1
vol 0Ah
noteL F6,6
vol 07h
note F6
countedLoopEnd
vol 0Ah
noteL F6,24
inst 13
vol 0Ah
note Fs5
note Fs6
note Fs5
note Fs6
noteL G5,36
noteL G6,6
note G6
noteL A5,12
vol 0Bh
noteL A6,6
vol 09h
note A6
waitL 12
vol 0Bh
noteL A6,6
vol 09h
note A6
inst 26
vol 0Bh
note F5
vol 07h
note F5
countedLoopStart 2
vol 0Bh
noteL F5,6
vol 07h
note F5
waitL 12
countedLoopEnd
vol 0Bh
noteL F5,6
note F5
note G5
vol 07h
note G5
countedLoopStart 2
vol 0Bh
noteL G5,6
vol 07h
note G5
waitL 12
countedLoopEnd
vol 0Bh
noteL G5,6
note G5
note F5
vol 07h
note F5
countedLoopStart 2
vol 0Bh
noteL F5,6
vol 07h
note F5
waitL 12
countedLoopEnd
vol 0Bh
noteL G5,6
vol 07h
note G5
vol 0Bh
note E5
vol 07h
note E5
vol 0Bh
note E5
vol 07h
note E5
waitL 12
vol 0Bh
noteL E5,6
vol 07h
note E5
vol 0Bh
note F5
vol 07h
note F5
vol 0Bh
note F5
vol 07h
note F5
vol 0Bh
noteL F5,24
inst 44
vol 0Ah
noteL G6,6
vol 07h
note G6
countedLoopStart 2
vol 0Ah
noteL G6,6
vol 07h
note G6
waitL 12
countedLoopEnd
vol 0Ah
noteL G6,6
note G6
countedLoopStart 1
vol 0Ah
noteL Fs6,6
vol 07h
note Fs6
countedLoopEnd
waitL 12
vol 0Ah
noteL Fs6,6
vol 07h
note Fs6
inst 16
vol 0Ch
noteL As6,18
noteL C7,6
noteL C7,24
inst 26
vol 0Bh
noteL As5,30
vol 07h
noteL As5,6
vol 0Bh
note As5
vol 07h
note As5
vol 0Bh
noteL C6,30
vol 07h
noteL C6,6
vol 0Bh
note C6
vol 07h
note C6
vol 0Bh
noteL D6,30
vol 07h
noteL D6,6
vol 0Bh
noteL D6,4
vol 07h
noteL D6,8
vol 0Bh
noteL Ds6,24
note C6
inst 26
countedLoopStart 1
vol 0Ah
noteL Cs7,6
note Gs6
note G6
note Gs6
note Cs7
vol 07h
note Cs7
countedLoopEnd
vol 0Ah
noteL Cs7,6
note Gs6
note F6
note Cs6
inst 54
countedLoopStart 1
vol 0Ah
noteL Fs6,6
note Cs6
note C6
note Cs6
note Fs6
vol 07h
note Fs6
countedLoopEnd
vol 0Ah
noteL Fs6,6
note Cs6
note As5
note Fs5
inst 26
countedLoopStart 1
vol 0Ah
noteL F6,6
note Cs6
note Gs5
note Cs6
note F6
vol 07h
note F6
countedLoopEnd
vol 0Ah
noteL F6,6
note Cs6
note Gs5
note F6
inst 54
countedLoopStart 1
vol 0Ah
noteL Cs6,6
note As5
note A5
note As5
note Cs6
vol 07h
note Cs6
countedLoopEnd
vol 0Ah
noteL Cs6,6
note C6
note Cs6
note F6
inst 26
countedLoopStart 1
vol 0Ah
noteL B6,6
note Fs6
note F6
note Fs6
note B6
vol 07h
note B6
countedLoopEnd
vol 0Ah
noteL B6,6
note Fs6
note E6
note Ds6
inst 54
countedLoopStart 1
vol 0Ah
noteL E6,6
note B5
note As5
note B5
note E6
vol 07h
note E6
countedLoopEnd
vol 0Ah
noteL E6,6
note B5
note As5
note B5
inst 26
vol 0Bh
noteL Fs5,48
note G5
note B5
note A5
inst 13
vol 0Bh
noteL Ds5,30
vol 08h
noteL Ds5,6
vol 0Bh
note Ds5
note Ds5
note E5
vol 08h
note E5
vol 0Bh
noteL E5,18
vol 08h
noteL E5,6
vol 0Bh
note E5
vol 08h
note E5
vol 0Bh
noteL Fs5,84
vol 08h
noteL Fs5,6
vol 06h
note Fs5
vol 0Bh
noteL Fs5,30
vol 08h
noteL Fs5,6
vol 0Bh
note Fs5
note Fs5
note Gs5
vol 08h
note Gs5
vol 0Bh
noteL Gs5,18
vol 08h
noteL Gs5,6
vol 0Bh
note Gs5
vol 08h
note Gs5
vol 0Bh
noteL As5,84
vol 08h
noteL As5,6
vol 06h
note As5
inst 54
repeatStart
vol 0Bh
noteL E5,6
vol 07h
note E5
countedLoopStart 1
vol 0Bh
noteL E5,6
vol 07h
note E5
waitL 12
countedLoopEnd
countedLoopStart 1
vol 0Bh
noteL E5,6
vol 07h
note E5
countedLoopEnd
repeatSection1Start
repeatEnd
repeatSection2Start
vol 0Bh
noteL D5,6
vol 07h
note D5
countedLoopStart 1
vol 0Bh
noteL D5,6
vol 07h
note D5
waitL 12
countedLoopEnd
countedLoopStart 1
vol 0Bh
noteL D5,6
vol 07h
note D5
countedLoopEnd
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
countedLoopStart 2
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
waitL 12
countedLoopEnd
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
repeatStart
inst 26
countedLoopStart 5
vol 0Bh
noteL E5,6
vol 07h
note E5
countedLoopEnd
vol 0Bh
noteL E5,12
repeatSection1Start
repeatEnd
repeatSection2Start
countedLoopStart 5
vol 0Bh
noteL D5,6
vol 07h
note D5
countedLoopEnd
vol 0Bh
noteL D5,12
vol 07h
noteL D5,6
wait
vol 0Bh
note E5
vol 07h
note E5
waitL 12
vol 0Bh
noteL Fs5,6
vol 07h
note Fs5
waitL 12
vol 0Bh
noteL E5,6
vol 07h
note E5
waitL 12
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
vol 0Bh
noteL Gs5,48
repeatStart
inst 13
vol 0Ch
noteL As5,6
note As5
note As5
vol 09h
note As5
inst 27
vol 0Ah
repeatSection1Start
noteL As4,6
wait
noteL Gs4,4
setRelease 04h
noteL Gs4,8
note Gs4
note Fs4
note F4
setRelease 01h
noteL Fs4,24
repeatEnd
repeatSection2Start
noteL Ds5,6
wait
noteL Cs5,4
setRelease 04h
noteL Cs5,8
note Cs5
note B4
note As4
setRelease 01h
noteL B4,24
inst 13
vol 0Ch
noteL Gs5,30
vol 09h
noteL Gs5,6
vol 0Ch
note Gs5
note Gs5
countedLoopStart 2
vol 0Ch
noteL Gs5,8
vol 09h
note Gs5
countedLoopEnd
waitL 90
vol 0Ch
noteL Cs6,6
noteL Cs6,96
mainLoopEnd
Music_1_Channel_3:
stereo 0C0h
setRelease 01h
vibrato 02Ch
waitL 21
mainLoopStart
repeatStart
inst 13
vol 0Bh
noteL F5,30
vol 08h
noteL F5,6
vol 0Bh
note F5
note F5
note Gs5
vol 08h
note Gs5
vol 0Bh
noteL Gs5,18
vol 08h
noteL Gs5,6
vol 0Bh
note Gs5
vol 08h
note Gs5
vol 0Bh
repeatSection1Start
noteL Ds5,6
vol 08h
note Ds5
vol 0Bh
noteL Ds5,18
vol 08h
noteL Ds5,6
vol 0Bh
note Ds5
vol 08h
note Ds5
vol 0Bh
note Cs5
vol 08h
note Cs5
vol 0Bh
noteL Cs5,30
vol 08h
noteL Cs5,6
repeatEnd
repeatSection2Start
noteL Ds5,6
vol 08h
note Ds5
vol 0Bh
note Ds5
vol 08h
note Ds5
vol 06h
note Ds5
vol 04h
note Ds5
vol 0Bh
noteL Cs5,60
vol 0Ah
noteL D6,6
vol 07h
note D6
countedLoopStart 2
vol 0Ah
noteL D6,6
vol 07h
note D6
waitL 12
countedLoopEnd
vol 0Ah
noteL D6,6
note D6
note E6
vol 07h
note E6
countedLoopStart 2
vol 0Ah
noteL E6,6
vol 07h
note E6
waitL 12
countedLoopEnd
vol 0Ah
noteL E6,6
note E6
vol 0Ah
note D6
vol 07h
note D6
countedLoopStart 1
vol 0Ah
noteL D6,6
vol 07h
note D6
waitL 12
countedLoopEnd
vol 0Ah
noteL D6,6
vol 07h
note D6
vol 0Ah
noteL E6,24
noteL C6,6
vol 07h
note C6
vol 0Ah
note C6
vol 07h
note C6
waitL 12
vol 0Ah
noteL C6,6
note C6
note D6
vol 07h
note D6
vol 0Ah
note D6
vol 07h
note D6
vol 0Ah
noteL D6,24
inst 44
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
countedLoopStart 2
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
waitL 12
countedLoopEnd
vol 0Ah
noteL Ds6,6
note Ds6
note D6
vol 07h
note D6
vol 0Ah
note D6
vol 07h
note D6
waitL 12
countedLoopStart 2
vol 0Ah
noteL D6,6
vol 07h
note D6
countedLoopEnd
vol 0Ah
noteL D6,24
inst 13
vol 0Ah
note Ds5
note Ds6
note D5
note D6
noteL Ds5,36
noteL Ds6,6
note Ds6
noteL F5,12
vol 0Bh
noteL F6,6
vol 09h
note F6
waitL 12
vol 0Bh
noteL F6,6
vol 09h
note F6
inst 26
vol 0Bh
note D5
vol 07h
note D5
countedLoopStart 2
vol 0Bh
noteL D5,6
vol 07h
note D5
waitL 12
countedLoopEnd
vol 0Bh
noteL D5,6
note D5
note E5
vol 07h
note E5
countedLoopStart 2
vol 0Bh
noteL E5,6
vol 07h
note E5
waitL 12
countedLoopEnd
vol 0Bh
noteL E5,6
note E5
note D5
vol 07h
note D5
countedLoopStart 2
vol 0Bh
noteL D5,6
vol 07h
note D5
waitL 12
countedLoopEnd
vol 0Bh
noteL E5,6
vol 07h
note E5
vol 0Bh
note C5
vol 07h
note C5
vol 0Bh
note C5
vol 07h
note C5
waitL 12
vol 0Bh
noteL C5,6
vol 07h
note C5
vol 0Bh
note D5
vol 07h
note D5
vol 0Bh
note D5
vol 07h
note D5
vol 0Bh
noteL D5,24
inst 44
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
countedLoopStart 2
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
waitL 12
countedLoopEnd
vol 0Ah
noteL Ds6,6
note Ds6
countedLoopStart 1
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
countedLoopEnd
waitL 12
vol 0Ah
noteL Ds6,6
vol 07h
note Ds6
inst 16
vol 0Ch
noteL Fs6,18
noteL Gs6,6
noteL Gs6,24
inst 26
vol 0Bh
note G5
inst 61
vol 0Dh
note C3
inst 26
vol 0Bh
note F5
inst 61
vol 0Dh
note C3
inst 26
vol 0Bh
note G5
inst 61
vol 0Dh
note C3
inst 26
vol 0Bh
note Fs5
inst 61
vol 0Dh
note C3
waitL 6
shifting 020h
stereo 080h
inst 26
countedLoopStart 1
vol 09h
noteL Cs7,6
note Gs6
note G6
note Gs6
note Cs7
vol 06h
note Cs7
countedLoopEnd
vol 09h
noteL Cs7,6
note Gs6
note F6
note Cs6
inst 54
countedLoopStart 1
vol 09h
noteL Fs6,6
note Cs6
note C6
note Cs6
note Fs6
vol 06h
note Fs6
countedLoopEnd
vol 09h
noteL Fs6,6
note Cs6
note As5
note Fs5
inst 26
countedLoopStart 1
vol 09h
noteL F6,6
note Cs6
note Gs5
note Cs6
note F6
vol 06h
note F6
countedLoopEnd
vol 09h
noteL F6,6
note Cs6
note Gs5
note F6
inst 54
countedLoopStart 1
vol 09h
noteL Cs6,6
note As5
note A5
note As5
note Cs6
vol 06h
note Cs6
countedLoopEnd
vol 09h
noteL Cs6,6
note C6
note Cs6
note F6
inst 26
countedLoopStart 1
vol 09h
noteL B6,6
note Fs6
note F6
note Fs6
note B6
vol 06h
note B6
countedLoopEnd
vol 09h
noteL B6,6
note Fs6
note E6
note Ds6
inst 54
countedLoopStart 1
vol 09h
noteL E6,6
note B5
note As5
note B5
note E6
vol 06h
note E6
countedLoopEnd
vol 09h
noteL E6,6
note B5
note As5
shifting 00h
stereo 0C0h
inst 26
vol 0Bh
noteL A4,48
note B4
note C5
note C5
inst 13
vol 0Ch
noteL B4,30
vol 09h
noteL B4,6
vol 0Ch
note B4
note B4
note B4
vol 09h
note B4
vol 0Ch
noteL B4,18
vol 09h
noteL B4,6
vol 0Ch
note B4
vol 09h
note B4
vol 0Ch
noteL D5,84
vol 09h
noteL D5,6
vol 07h
note D5
vol 0Ch
noteL D5,30
vol 09h
noteL D5,6
vol 0Ch
note D5
note D5
note E5
vol 09h
note E5
vol 0Ch
noteL E5,18
vol 09h
noteL E5,6
vol 0Ch
note E5
vol 09h
note E5
vol 0Ch
noteL Fs5,84
vol 09h
noteL Fs5,6
vol 07h
note Fs5
inst 54
vol 0Bh
note D5
vol 07h
note D5
countedLoopStart 1
vol 0Bh
noteL D5,6
vol 07h
note D5
waitL 12
countedLoopEnd
countedLoopStart 1
vol 0Bh
noteL D5,6
vol 07h
note D5
countedLoopEnd
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
countedLoopStart 1
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
waitL 12
countedLoopEnd
countedLoopStart 1
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
countedLoopEnd
vol 0Bh
noteL B4,6
vol 07h
note B4
countedLoopStart 1
vol 0Bh
noteL B4,6
vol 07h
note B4
waitL 12
countedLoopEnd
countedLoopStart 1
vol 0Bh
noteL B4,6
vol 07h
note B4
countedLoopEnd
vol 0Bh
noteL A4,6
vol 07h
note A4
countedLoopStart 2
vol 0Bh
noteL A4,6
vol 07h
note A4
waitL 12
countedLoopEnd
vol 0Bh
noteL A4,6
vol 07h
note A4
inst 26
countedLoopStart 5
vol 0Bh
noteL D5,6
vol 07h
note D5
countedLoopEnd
vol 0Bh
noteL D5,12
countedLoopStart 5
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
countedLoopEnd
vol 0Bh
noteL Cs5,12
countedLoopStart 5
vol 0Bh
noteL B4,6
vol 07h
note B4
countedLoopEnd
vol 0Bh
noteL B4,12
wait
vol 0Bh
noteL Cs5,6
vol 07h
note Cs5
waitL 12
vol 0Bh
noteL B4,6
vol 07h
note B4
waitL 12
vol 0Bh
noteL A4,6
vol 07h
note A4
waitL 12
vol 0Bh
noteL G4,6
vol 07h
note G4
vol 0Bh
noteL F4,48
repeatStart
stereo 0C0h
inst 13
vol 0Ch
noteL Fs5,6
note Fs5
note Fs5
vol 09h
note Fs5
wait
shifting 020h
stereo 080h
inst 27
vol 09h
repeatSection1Start
noteL As4,6
wait
noteL Gs4,4
setRelease 04h
noteL Gs4,8
note Gs4
note Fs4
note F4
setRelease 01h
noteL Fs4,18
shifting 00h
repeatEnd
repeatSection2Start
noteL Ds5,6
wait
noteL Cs5,4
setRelease 04h
noteL Cs5,8
note Cs5
note B4
note As4
setRelease 01h
noteL B4,18
shifting 00h
stereo 0C0h
inst 13
vol 0Ch
noteL Ds5,30
vol 09h
noteL Ds5,6
vol 0Ch
note Ds5
note Ds5
countedLoopStart 2
vol 0Ch
noteL Ds5,8
vol 09h
note Ds5
countedLoopEnd
waitL 90
vol 0Ch
noteL As5,6
noteL As5,96
mainLoopEnd
Music_1_Channel_4:
[removing this channel's content because of post size limit]
Music_1_Channel_5:
stereo 0C0h
waitL 21
mainLoopStart
waitL 24
sampleL 0,48
sample 0
sample 0
sampleL 0,12
sampleL 0,36
sampleL 0,48
sampleL 0,24
sampleL 2,6
sample 3
sampleL 2,12
sample 0
sampleL 2,24
sampleL 4,3
sample 4
sample 3
sample 3
sampleL 2,6
sample 4
sample 2
sample 2
repeatStart
countedLoopStart 4
sampleL 3,6
sample 4
sampleL 3,12
sample 4
sampleL 3,6
sampleL 4,12
sampleL 4,6
sampleL 3,12
sample 4
sampleL 3,6
sample 4
countedLoopEnd
sampleL 3,6
sample 4
sampleL 3,12
sample 4
sampleL 3,6
sampleL 4,12
sampleL 4,6
sampleL 3,12
sampleL 4,6
sample 4
sample 3
sample 3
repeatSection1Start
sampleL 2,24
sampleL 0,22
sampleL 4,1
sample 3
sampleL 2,24
sample 0
sampleL 0,6
sample 3
sample 3
sample 2
sampleL 2,3
sample 3
sample 4
sample 4
sampleL 2,6
sampleL 3,12
sampleL 3,6
sample 2
sampleL 3,12
sampleL 3,6
sampleL 2,12
repeatEnd
repeatSection2Start
countedLoopStart 1
sampleL 2,24
sampleL 0,22
sampleL 4,1
sample 3
sampleL 2,24
sample 0
countedLoopEnd
countedLoopStart 2
sampleL 0,36
sampleL 2,6
sample 3
sample 2
sample 3
sampleL 2,3
sample 3
sample 4
sample 4
sampleL 2,12
sampleL 2,6
sample 3
waitL 36
sampleL 2,6
sample 3
sample 2
sample 3
sampleL 2,3
sample 3
sample 4
sample 4
sampleL 2,24
countedLoopEnd
repeatStart
sampleL 0,6
sample 3
sampleL 2,3
sample 3
sample 4
sample 4
sampleL 2,12
sampleL 2,6
sample 3
repeatSection1Start
sampleL 0,12
sampleL 2,6
sample 3
sample 2
sample 3
sampleL 2,3
sample 3
sample 4
sample 4
repeatEnd
repeatSection2Start
sampleL 4,6
sample 2
sample 4
sample 4
sample 3
sample 3
sample 2
sample 2
countedLoopStart 1
waitL 24
sampleL 0,12
sampleL 2,6
sampleL 3,18
sampleL 2,12
sample 0
sample 2
sample 0
sample 4
sample 4
sample 4
sample 3
sample 3
sample 2
sample 2
countedLoopEnd
waitL 84
wait
wait
waitL 96
countedLoopStart 2
sampleL 3,6
sample 4
sampleL 3,12
sample 4
sampleL 3,6
sampleL 4,12
sampleL 4,6
sampleL 3,12
sampleL 3,6
sample 4
countedLoopEnd
sampleL 3,12
sample 4
sample 3
sampleL 3,6
sample 4
sampleL 3,12
sampleL 3,6
sample 4
sample 3
sample 4
sample 3
sample 2
sampleL 0,24
sampleL 4,3
sample 4
sample 4
sample 4
sample 3
sample 3
sample 3
sample 3
countedLoopStart 1
sampleL 5,6
sample 3
sampleL 2,60
sampleL 1,24
countedLoopEnd
sampleL 0,22
sampleL 4,1
sample 3
sampleL 2,23
sampleL 4,1
sampleL 5,15
sampleL 4,1
sampleL 5,15
sampleL 4,1
sampleL 5,16
waitL 24
sampleL 0,66
sampleL 1,6
sampleL 0,48
sampleL 2,6
sampleL 2,3
sample 3
sample 3
sample 4
sampleL 2,6
sampleL 2,24
mainLoopEnd
Music_1_Channel_6:
psgInst 07Ch
setRelease 01h
vibrato 04Ch
psgNoteL F4,3
psgNote G4
psgNote A4
psgNote As4
psgNote C5
psgNote D5
psgNote Ds5
mainLoopStart
countedLoopStart 23
psgNoteL F5,3
psgNote G5
countedLoopEnd
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote B4
psgNote As4
psgNote Gs4
psgNote Fs4
psgNote F4
psgNote Ds4
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote B4
psgNote Cs5
psgNote Ds5
countedLoopStart 15
psgNoteL F5,3
psgNote G5
countedLoopEnd
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote C5
psgNote As4
psgNote Gs4
psgNote Fs4
psgNote F4
psgNote Ds4
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote C5
psgNote Cs5
psgNote Ds5
countedLoopStart 2
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote B4
countedLoopEnd
psgNoteL As4,3
psgNote Gs4
psgNote Fs4
psgNote F4
repeatStart
psgInst 07Ah
countedLoopStart 7
psgNoteL D3,6
psgNote F3
countedLoopEnd
countedLoopStart 7
psgNoteL E3,6
psgNote G3
countedLoopEnd
countedLoopStart 5
psgNoteL D3,6
psgNote F3
countedLoopEnd
countedLoopStart 5
psgNoteL E3,6
psgNote G3
countedLoopEnd
psgInst 07Ch
psgNoteL A3,6
psgNote E3
psgNote F3
psgNote A3
repeatSection1Start
psgNoteL Cs4,6
psgNote D4
psgNote F4
psgNote A4
psgInst 07Ah
countedLoopStart 7
psgNoteL Ds3,6
psgNote G3
countedLoopEnd
countedLoopStart 7
psgNoteL D3,6
psgNote F3
countedLoopEnd
psgInst 07Bh
psgNoteL As2,6
psgNote C3
psgNote Ds3
psgNote Fs3
psgNote As3
psgNote C4
psgNote Ds4
psgNote Fs4
psgNote A2
psgNote As2
psgNote D3
psgNote Fs3
psgNote A3
psgNote As3
psgNote D4
psgNote Fs4
psgNote G4
psgNote Ds4
psgNote C4
psgNote As3
psgNote C4
psgNote As3
psgNote C4
psgNote Ds4
psgNote A4
psgNote F4
psgNote Ds4
psgNote C4
psgNote As3
psgNote A3
psgNote F3
psgNote C3
repeatEnd
repeatSection2Start
psgNoteL D4,6
psgNote A3
psgNote F3
psgNote D3
psgInst 07Ah
countedLoopStart 7
psgNoteL F3,6
psgNote G3
countedLoopEnd
countedLoopStart 7
psgNoteL Ds3,6
psgNote F3
countedLoopEnd
psgInst 07Bh
countedLoopStart 2
psgNoteL As2,6
psgNote D3
countedLoopEnd
psgNoteL F3,6
psgNote G3
countedLoopStart 2
psgNoteL C3,6
psgNote D3
countedLoopEnd
psgNoteL F3,6
psgNote A3
countedLoopStart 2
psgNoteL D3,6
psgNote Ds3
countedLoopEnd
psgNoteL G3,6
psgNote As3
psgNote Fs3
psgNote As3
psgNote C4
psgNote Ds4
psgNote Fs4
psgNote As4
psgInst 07Dh
psgNote Cs5
psgNote Ds5
psgNoteL F5,108
psgNoteL Ds5,12
psgNote Cs5
psgNote A4
psgNote As4
psgNoteL C5,24
psgNoteL Cs5,12
psgNoteL Gs4,108
psgNoteL C4,12
psgNote Cs4
psgNoteL As4,24
psgNoteL Gs4,12
psgNoteL As4,8
psgNote B4
psgNote Cs5
psgNoteL Ds5,108
psgNoteL Cs5,12
psgNote B4
psgNote G4
psgNote Gs4
psgNoteL As4,24
psgNoteL B4,12
psgNoteL Cs5,48
psgNote D5
psgNote E5
psgNoteL C3,6
psgNote E3
psgNote A3
psgNote C4
psgNote E4
psgNote A4
psgNote C5
psgNote E5
psgNote Ds4
psgNote B3
psgNote Fs3
psgNote B3
psgNoteL Ds4,4
waitL 8
psgNoteL Ds4,6
psgNote Ds4
psgNote E4
psgNote B3
psgNote Gs3
psgNote B3
psgNoteL E4,4
waitL 8
psgNoteL E4,4
waitL 8
psgNoteL Fs4,6
psgNote D4
psgNote A3
psgNote D4
psgNote Fs4
psgNote D4
psgNote A3
psgNote D4
psgNote Fs4
psgNote D4
psgNote D5
psgNote A4
psgNote Fs4
psgNote D4
psgNote A3
psgNote Fs3
psgNote Fs4
psgNote D4
psgNote A3
psgNote D4
psgNoteL Fs4,4
waitL 8
psgNoteL Fs4,6
psgNote Fs4
psgNote Gs4
psgNote E4
psgNote B3
psgNote E4
psgNoteL Gs4,4
waitL 8
psgNoteL Gs4,4
waitL 8
countedLoopStart 1
psgNoteL As4,6
psgNote Fs4
psgNote Cs4
psgNote Fs4
countedLoopEnd
psgNoteL As4,6
psgNote Fs4
psgNote Fs5
psgNote Cs5
psgNote As4
psgNote Fs4
psgNote Cs4
psgNote As3
countedLoopStart 7
psgInst 00h
waitL 102
countedLoopEnd
psgInst 07Ch
psgNoteL Cs3,4
psgNote Fs3
psgNote As3
psgNote Cs4
psgNote Fs4
psgNote As4
psgInst 00h
waitL 72
psgInst 07Ch
psgNoteL Ds3,4
psgNote Fs3
psgNote B3
psgNote Ds4
psgNote Fs4
psgNote B4
psgInst 00h
waitL 96
waitL 24
psgInst 07Ch
countedLoopStart 11
psgNoteL Cs3,3
psgNote Ds3
countedLoopEnd
psgNoteL Cs3,3
psgNote Ds3
psgNote F3
psgNote Fs3
psgNote Gs3
psgNote As3
psgNote Gs3
psgNote Fs3
psgNote F3
psgNote Fs3
psgNote Gs3
psgNote As3
psgNote C4
psgNote Cs4
psgNote C4
psgNote As3
psgNote Gs3
psgNote As3
psgNote C4
psgNote Cs4
psgNote Ds4
psgNote F4
psgNote Ds4
psgNote Cs4
psgNote Ds4
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote C5
psgNote Cs5
psgNote Ds5
mainLoopEnd
Music_1_Channel_7:
psgInst 00h
waitL 9
shifting 010h
psgInst 07Ah
setRelease 01h
vibrato 04Ch
psgNoteL F4,3
psgNote G4
psgNote A4
psgNote As4
psgNote C5
psgNote D5
psgNote Ds5
mainLoopStart
countedLoopStart 23
psgNoteL F5,3
psgNote G5
countedLoopEnd
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote B4
psgNote As4
psgNote Gs4
psgNote Fs4
psgNote F4
psgNote Ds4
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote B4
psgNote Cs5
psgNote Ds5
countedLoopStart 15
psgNoteL F5,3
psgNote G5
countedLoopEnd
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote C5
psgNote As4
psgNote Gs4
psgNote Fs4
psgNote F4
psgNote Ds4
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote C5
psgNote Cs5
psgNote Ds5
countedLoopStart 2
psgNoteL F5,3
psgNote Ds5
psgNote Cs5
psgNote B4
countedLoopEnd
psgNoteL As4,3
shifting 00h
repeatStart
psgInst 07Ah
countedLoopStart 7
psgNoteL C3,6
psgNote As2
countedLoopEnd
countedLoopStart 7
psgNoteL D3,6
psgNote C3
countedLoopEnd
countedLoopStart 5
psgNoteL C3,6
psgNote As2
countedLoopEnd
psgNoteL D3,6
psgNote C3
psgNote D3
psgNote C3
countedLoopStart 3
psgNoteL C3,6
psgNote A2
countedLoopEnd
psgInst 07Ch
psgNoteL D3,6
psgNote Cs3
psgNote D3
psgNote F3
repeatSection1Start
psgNoteL E3,6
psgNote F3
psgNote A3
psgNote F3
psgInst 07Ah
countedLoopStart 7
psgNoteL C3,6
psgNote As2
countedLoopEnd
countedLoopStart 7
psgNoteL As2,6
psgNote A2
countedLoopEnd
psgInst 07Bh
psgNoteL Fs2,6
psgNote As2
psgNote C3
psgNote Ds3
psgNote Fs3
psgNote As3
psgNote C4
psgNote Ds4
psgNote Fs2
psgNote A2
psgNote As2
psgNote D3
psgNote Fs3
psgNote A3
psgNote As3
psgNote D4
psgNote Ds4
psgNote C4
psgNote As3
psgNote G3
psgNote As3
psgNote G3
psgNote As3
psgNote C4
psgNote F4
psgNote Ds4
psgNote C4
psgNote A3
psgNote F3
psgNote Ds3
psgNote C3
psgNote A2
repeatEnd
repeatSection2Start
psgNoteL A3,6
psgNote F3
psgNote D3
psgNote A2
psgInst 07Ah
countedLoopStart 7
psgNoteL Ds3,6
psgNote D3
countedLoopEnd
countedLoopStart 7
psgNoteL C3,6
psgNote Gs2
countedLoopEnd
psgInst 07Bh
psgNoteL A2,6
psgNote G2
psgNote A2
psgNote G2
psgNote A2
psgNote G2
psgNote D3
psgNote As2
psgNote A2
psgNote F2
psgNote A2
psgNote F2
psgNote A2
psgNote F2
psgNote A2
psgNote C3
psgNote As2
psgNote G2
psgNote As2
psgNote G2
psgNote As2
psgNote G2
psgNote As2
psgNote D3
psgNote Ds3
psgNote C3
psgNote Ds3
psgNote Fs3
psgNote As3
psgNote Fs3
psgNote As3
psgNote C4
shifting 010h
psgInst 07Bh
psgNote Cs5
psgNote Ds5
psgNoteL F5,108
psgNoteL Ds5,12
psgNote Cs5
psgNote A4
psgNote As4
psgNoteL C5,24
psgNoteL Cs5,12
psgNoteL Gs4,108
psgNoteL C4,12
psgNote Cs4
psgNoteL As4,24
psgNoteL Gs4,12
psgNoteL As4,8
psgNote B4
psgNote Cs5
psgNoteL Ds5,108
psgNoteL Cs5,12
psgNote B4
psgNote G4
psgNote Gs4
psgNoteL As4,24
psgNoteL B4,12
psgNoteL Cs5,48
psgNote D5
psgNoteL E5,36
shifting 00h
psgInst 07Ch
psgNoteL C2,6
psgNote E2
psgNote A2
psgNote C3
psgNote C3
psgNote E3
psgNote A3
psgNote C4
psgNote Fs3
psgNote Ds3
psgNote B2
psgNote Ds3
psgNoteL Fs3,4
waitL 8
psgNoteL Fs3,6
psgNote Fs3
psgNote Gs3
psgNote E3
psgNote B2
psgNote E3
psgNoteL Gs3,4
waitL 8
psgNoteL Gs3,4
waitL 8
psgNoteL A3,6
psgNote Fs3
psgNote D3
psgNote Fs3
psgNote A3
psgNote Fs3
psgNote D3
psgNote Fs3
psgNote A3
psgNote Fs3
psgNote Fs4
psgNote D4
psgNote A3
psgNote Fs3
psgNote D3
psgNote A2
psgNote A3
psgNote Fs3
psgNote D3
psgNote Fs3
psgNoteL A3,4
waitL 8
psgNoteL A3,6
psgNote A3
psgNote B3
psgNote Gs3
psgNote E3
psgNote Gs3
psgNoteL B3,4
waitL 8
psgNoteL B3,4
waitL 8
psgNoteL Cs4,6
psgNote As3
psgNote Fs3
psgNote As3
psgNote Cs4
psgNote As3
psgNote Fs3
psgNote As3
psgNote Cs4
psgNote As3
psgNote As4
psgNote Fs4
psgNote Cs4
psgNote As3
psgNote Fs3
psgNote Cs3
countedLoopStart 7
psgInst 00h
waitL 102
countedLoopEnd
psgInst 07Ch
psgNoteL Fs2,4
psgNote As2
psgNote Cs3
psgNote Fs3
psgNote As3
psgNote Cs4
psgInst 00h
waitL 72
psgInst 07Ch
psgNoteL Fs2,4
psgNote B2
psgNote Ds3
psgNote Fs3
psgNote B3
psgNote Ds4
psgInst 00h
waitL 96
waitL 24
psgInst 07Ah
psgNoteL As2,153
shifting 010h
psgNoteL Ds4,3
psgNote F4
psgNote Fs4
psgNote Gs4
psgNote As4
psgNote C5
psgNote Cs5
psgNote Ds5
mainLoopEnd
Music_1_Channel_9:
channel_end
You can find it here : disasm/data/sound/SF2SoundTools-1.0.0.jar, and you can execute it properly with vgmmmtxtimport.bat.
So you can now compose new music and import it into an existing music bank, if you make enough place for it.
This conversion doesn't make any kind of space usage optimization though, so a good knowledge of how tracker music patterns work, and a good knowledge of the sound driver's music format, are required to replace repeated patterns with appropriate loops.
Here are the YM instrument bank and PCM bank you can use in VGM MM :
http://shrubbery.free.fr/sf2hack/sf2dis ... mmmsf2.zip
The SF2 Disassembly Super Thread / sf2hack Discord / Currently not available for tech support (sorry!)
-
RockyGatewayNewbie
- Posts: 2
- Joined: Fri Jan 31 2014 2:12am
- Status: Offline
Re: SF2 Disassembly Tool Suite
Hello, I've got a somewhat weird question to ask and I'm not entirely sure how to write it. Is there a way to control which "water" animation is currently showing up on the rendered map within SF2MapEditor or one of the other two map editors?
For example
These would be the first and second water animations:
Right now only one of those shows up on the map render, and I can't for the life of me figure out how to make the other one appear. I'm not even sure if having both be available to show up is possible or not. The reason why I'm looking for this is because I'm making some animated wallpapers for Wallpaper Engine, and so far animating the water the old fashioned way by arranging 8x8 blocks in the right order is getting a bit annoying.
For example
These would be the first and second water animations:
Right now only one of those shows up on the map render, and I can't for the life of me figure out how to make the other one appear. I'm not even sure if having both be available to show up is possible or not. The reason why I'm looking for this is because I'm making some animated wallpapers for Wallpaper Engine, and so far animating the water the old fashioned way by arranging 8x8 blocks in the right order is getting a bit annoying.
-
WizShining Member
- Posts: 181
- Joined: Sun Mar 18 2007 2:43pm
- Location: Blois, France
- Contact:
- Status: Offline
Re: SF2 Disassembly Tool Suite
Hey RockyGateway,
SF2MapEditor currently cannot display the alternative animation tiles, but that's something I'll be glad to implement as it's a totally legitimate request to work on map animations properly.
Right now I'm on a long vacation trip (just saw the Grand Canyon today, oh the vertigo ) so I won't be able to provide an update until next month, but please remind me to work on this and I'll be happy to do something quickly for your needs and then maybe make animation edits a bit easier while I'm at it.
SF2MapEditor currently cannot display the alternative animation tiles, but that's something I'll be glad to implement as it's a totally legitimate request to work on map animations properly.
Right now I'm on a long vacation trip (just saw the Grand Canyon today, oh the vertigo ) so I won't be able to provide an update until next month, but please remind me to work on this and I'll be happy to do something quickly for your needs and then maybe make animation edits a bit easier while I'm at it.
The SF2 Disassembly Super Thread / sf2hack Discord / Currently not available for tech support (sorry!)
-
FfuzzyLogikMember
- Posts: 32
- Joined: Wed Dec 12 2018 4:46pm
- Status: Offline
Re: SF2 Disassembly Tool Suite
Wiz by the way, take time to go in Grand Canyon instead of answering ! Its so intense, big... You've 2 billion years front of you ! Have pleasure. If you have time to go far to the north, I suggest you Yosemite National Park, very nice forest (and less hot) of some of biggest trees in world. Have fun !
-
jordaneliasNewbie
- Posts: 10
- Joined: Mon Aug 14 2017 10:04pm
- Status: Offline
Re: SF2 Disassembly Tool Suite
Howdy! I am very limited in working with the disassembly tool suite as I am by no means a coder, but I do my best to poke around. Right now, I am trying to figure out how to implement a debuff called 'Weaken' that would parallel Slow in affecting the enemy's Attack attribute.
Even in the event that this is correct, I believe that I would have to edit it into the .asm files located in \data\stats\spells followed by editing the relevant .asm in data\stats\allies\stats.
As a companion, I would love to implement a debuff called 'Root' that would prevent the enemy from moving. I know that Siel kindly released some patches that did similar things to what I am asking about here, but his patches are not 1:1 for what I want.
Any help would be greatly appreciated!
Edit:
Code: Select all
; =============== S U B R O U T I N E =======================================
WriteSkirmishScript_WeakenMessage:
jsr GetBaseATK
mulu.w #3,d1
lsr.l #3,d1
move.w #$10,(a6)+
move.w #$14D,(a6)+
move.w d0,(a6)+
move.w #0,(a6)+
move.w #0,(a6)+
move.w d1,(a6)+
rts
; End of function WriteSkirmishScript_WeakenMessage
As a companion, I would love to implement a debuff called 'Root' that would prevent the enemy from moving. I know that Siel kindly released some patches that did similar things to what I am asking about here, but his patches are not 1:1 for what I want.
Any help would be greatly appreciated!
Edit:
Code: Select all
SN 68k version 2.53
C:\EMULATION\GENESIS\SF2DISASM-MASTER-VANILLA\DISASM\DATA\STATS\SPELLS\SPELLDEFS.ASM(140) : Error : Expression must evaluate
val: set val|spell_weaken
C:\EMULATION\GENESIS\SF2DISASM-MASTER-VANILLA\DISASM\DATA\STATS\ALLIES\STATS\ALLYSTATS00.ASM(16) : Error : Expression must evaluate
val: set val|spell_weaken
Errors during pass 1 - pass 2 aborted
Assembly completed.
2 error(s) from 293766 lines in 0.50 seconds