News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

Author Topic: [GEN] Monster World IV (T-German) - WIP  (Read 1138 times)

ArcadeTV

  • Newbie
  • *
  • Posts: 3
    • View Profile
[GEN] Monster World IV (T-German) - WIP
« on: April 27, 2017, 03:41:26 am »
Hi guys,
great to be here finally! I'd like to announce my first romhacking project and would love to ask some questions here to the experts.
Here's our project, sorry the page is in german -> https://circuit-board.de/forum/index.php/Thread/23560

We have figured out pretty much all there is to it incl pointers, tables, strings etc.
There are some things though we are struggeling at the moment.

In the Menu we'd like to exchange the tiles that form the word "ITEM" with a translated version, but that means we need to figure out how to extend the tiles for it.
(hope you know what I mean, I'm not a native english-speaker)

Tiles are addressed at 0xC00E8 and are located at 0xC6A46 in the Virtual Console rom.

If you have an idea how to handle this, we're totally open for any ideas on this and of course will be very much appreciated.

Thanks!!




RadioTails

  • Sr. Member
  • ****
  • Posts: 338
  • Holding the Mega Drive controller
    • View Profile
Re: [GEN] Monster World IV (T-German) - WIP
« Reply #1 on: April 27, 2017, 04:26:33 pm »
This is basing off the hacking I've been doing with Dr. Robotnik's Mean Machine (which uses a Nemesis and a custom compression, which I can tell the game which one to use).

The one cool think about Nemesis compressing is it will keep un-compressing the data until it reaches the end.  So I can make the amount data as small or big as a I like.  This was useful for expanding the font data.

Going back to your question, looking at the VDP RAM, it looks like offset B400 - BFE0 are a group of tiles that get loaded there.  There are plenty of black tiles that you can use to store "Ausr├╝stung" and "Artikel".  The fun part is figuring out the compression and where the graphic is stored (a quick way is to search for B400, change each finding to B800 until the data gets stored at the new location, the graphic pointer is mostly likely next to it).

You would then need to figure out how the game calls the required tiles.
Avatar by LazyNinjartist

ArcadeTV

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: [GEN] Monster World IV (T-German) - WIP
« Reply #2 on: April 27, 2017, 04:31:03 pm »
Thank you, that's definitely gonna help  :thumbsup:

April 28, 2017, 07:43:17 am - (Auto Merged - Double Posts are not allowed before 7 days.)
Right now we're having a hard time finding the offsets for the tiles that contain the heart-jars and PUSH buttons from the heart-machine...
Can anybody help finding these?



April 29, 2017, 01:40:22 am - (Auto Merged - Double Posts are not allowed before 7 days.)
we got the offset. one of us was able to brute-force it with an emulator and custom script.
Now we need to figure out why we referenced the wrong palette ;)

« Last Edit: April 29, 2017, 01:40:23 am by ArcadeTV »

ArcadeTV

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: [GEN] Monster World IV (T-German) - WIP
« Reply #3 on: May 18, 2017, 04:41:01 am »
Right now I'm trying to find a way to disable the rom switching to japanese when it detects a jap system..
Codefinder in KEGA didn't help so I hope it's just a simple byte-flag or something like that..
Can anybody help with that?

anyways, I'd like to share my findings from the text-engine and will put them into the wiki as soon as I figured out the rest...


Spoiler:
Code: [Select]
BD <WAIT-FOR-BUTTON>
Stops the text animation and displays an arrows that points down, indicating there is more text to come.
Text animation continues once a button is pressed.
BE <Animation>
<BE XX> is an animation Controller where XX works with any number.
The higher the value for XX, the slower the text will slide in.
 
Values found in the rom are:
 
00 - practically disables the animation and text is displayed instantly.
04 - a bit faster than the default text animation.
08 - a bit slower than the default text animation.
BF02 <Clear Textbox>
<BF02> clears the current textbox. The following text fill start fresh from the upper left.
BF03 <COLOR>
<BF 03 XX> changes the font color. Has to be terminated by <BF 03 1F> to end coloring.
Many different values for XX work, but only these were found in the ROM:
18 - RED
1B - BLUE
1E - YELLOW
1A - DARK BLUE
0F - Transparent Background.
Pretty much all values from 0x10 to 0x1F look okay.
 
Example:
<BF 03 18>This Text is RED<BF 03 1F>
<BF 03 1B>This Text is BLUE<BF 03 1F>
<BF 03 1E>This Text is YELLOW<BF 03 1F>
 
Notes:
Additionally the font can have an outline by using <B7 01>
BF04001E <Display-Buy-Quit>
<BF 04 00 1E> brings up the option-panel with BUY and QUIT.
Works with <BF07 XXXXXX> where XXXXXX is the absolute offset for the string to be displayed when QUIT was selected.
BF040027 <Display-Yes-No>
Displays the YES/NO option.
When the options are displayed, the max textlength per line is 17 characters.
BF05 <BF 05>
Unknown Controller <BF 05 XX XX>
BF07 <Text for NO-Answer>
<BF 07> specifies where the String for an answer is located when the selected option was -NO-.
Dependancies:
A YES/NO-option has to have been triggered before with <BF 04 00 27>
Example:
Question String.
<BF 04 00 27><BF 07 15 B7 87>
Answer-String if YES was selected.
At offset 0x15B787: Answer-String if NO was selected.
BF09 <WAIT>
When <BF 09 XX> occurs, the textbox stops and waits for the time specified in XX.
All values for XX seem to work, but only these were found in the ROM:
0F - 15ms
14 - 20ms
1E - 30ms
28 - 40ms
2D - 45ms
3C - 60ms
5A - 90ms
78 - 120ms
B4 - 180ms
Pretty much all values from 0x10 to 0x1F look okay.
 
Example:
This is displayed instantly.<BF 09 5A> This is diplayed after 90ms.
BF0A <BF0A>
Unknown Controller <BF 0A XX>
Occurs exclusively with XX = 01 in all 4 dialogues, when the rescued spirits talk to you.
BF0B <SaveScreen>
When <BF 0B XX> occurs, the game displays the screen to save your progress and writes the data upon save with the name specified in XX.
List of Bytes is incomplete, but these were found in the ROM so far:
ED - Ice Pyramid 1
0B - Stream Sanctuary
CF - ?
CE - ?
31 - ?
Notes:
After Save you are redirected back into the game,
untested if the dialog continues on Save/Abort or if the textbox will be closed.
BF0C <BF 0C>
Unknown Controller <BF 0C>
BF0D <BF 0D>
Unknown Controller <BF 0D>
BF0E <BF0E>
Unknown Controller <BF0E XX>
BF0F <BF 0F XX XX>
Unknown Controller <BF 0F XX XX>
BF11 <BF 11>
Unknown Controller <BF 11>
BF14 <BF14>
Unknown Controller <BF 14 XX XX XX XX>
Only occurs in one dialogue which starts at offset 0x001590B3.
BF1500 <Correct-Answer-is-YES>
When a question is asked by the SPHINX <BF 15 00> in the end of the string indicates that the correct answer is YES.
Contrary to <BF 15 01> which indicates that the correct answer is NO.
BF1501 <Correct-Answer-is-NO>
When a question is asked by the SPHINX <BF 15 01> in the end of the string indicates that the correct answer is NO.
Contrary to <BF 15 00> which indicates that the correct answer is YES.
BF16 <BF16>
Unknown Controller <BF 16>
BF17 <BF17>
Unknown Controller <BF 17>
BF18 <BF18>
Unknown Controller <BF 18 XX XX XX XX>
BF19 <BF19>
Unknown Controller <BF 19 XX XX XX>
BF1A <BF1A>
Unknown Controller <BF 1A XX XX XX XX XX>
BF1B <SHOP>
Shop Controller <BF1B | XX YY ZZ | PYPY | PNPN>
Opens the shopping screen and displays max 3 items specified in XX, YY and ZZ.
When one of these values is 00, then there is no item in this place on the screen.
Last 4 bytes are pointers, each 2 bytes long, relative to the first byte of the pointer:
PY is used when you buy an item and leave the shop.
PN is used when you don't buy anything and leave the shop.
Example:
This will display the shop with 2 items, the rightmost being empty.
The answer upon buying an item will be -Thanks- and if no item was bought it's -poor girl!-
Hey, wanna buy anything?<BD><BC><BF1B 01 02 00 0004 000A>Thanks<BD><FF>poor girl!<BD><FF>
BF1C <BF1C>
Unknown Controller <BF 1C XX>
BF1E <BF1E>
Unknown Controller <BF1E XX XX>
E4 <E4>
Unknown Controller <E4 XX XX XX XX>
E8 <E8>
Unknown Controller <E8 XX XX XX>
F8 <Condition Expander>
<F8 XX XX>
Meaning is unclear at this time.
Occurs often togehter with condition-controller <FC XX XX YY YY>
FA <FA>
Unknown Controller <FA XX XX>
FB <SOUND>
Sound Controller <FB XX>
Plays a sound within the current dialogue.
<XX> addresses the sound to be played. Many values work, but depending on the selected sound, the background-music may stop eventually.
Common values found in the strings are:
<FB 14> Jingle 1
<FB 2E> Jingle 2
<FB 33> Not enough gold
Values match those of the hidden SOUND TEST MENU:
(On the title screen, when NEW GAME appears after you pressed START,
press UP, DOWN, UP, DOWN, LEFT, LEFT, RIGHT, RIGHT to open the SOUND TEST MENU)
00:OVERTURE
01:OVER THE CLOUDS
02:ARABESQUE COURT IN DREAM
03:MAIN THEME
04:STREAM SANCTUARY
05:BIRTH OF PEPELOGOO
06:LAMP DE GODJARRE
07:LONG DISTANCE
08:LABYRINTH ON THE SKY
09:KOOL DUDE
0A:PREMONITION
0B:KINGDOM OF RAPADAGNA
0C:TRY THE TRIAL
0D:VOLCANIC CAVE
0E:HEART OF ICEGRAVE
0F:HEAD BANGER
10:MALEVOLENT DEITY
11:FINALE PART 1
12:A CRADLE SONG OF PEPELOGOO
13:TALES FROM MONSTER WORLD
14:JINGLE 1
15:FINALE PART 2
16:ACENSION TO HEAVEN
17:CONQUERS THE DUNGEON
18:JUMP
19:ATTACK
1A:ROPE RIDE
1B:ROPE FALL
1C:SLAPPED
1D:DAMAGE 1
1E:DAMAGE 2
1F:FALL
20:LANDING
21:SLASH
22:CATHEDRAL
23:FADE INTO DARKSIDE
24:REBIRTH
25:DOOR
26:SCN CHG
27:PEPE VOICE 1
28:PEPE VOICE 2
29:ITEM EXIST
2A:ITEM GET
2B:LIFE
2C:RES KEY
2D:RES BTTN
2E:JINGLE 5
2F:SPLASH
30:EN DEAD
31:SLIP
32:TRUE
33:FALSE
34:COUNT
35:SAVE
36:LOAD
37:FLOW
38:DEFENCE
39:PEPE VOICE 3
3A:BOX OPEN
3B:TREE
3C:EGG FALL
3D:EGG CRACK
3E:EGG HATCH
3F:CRYS FLASH
40:TOW APPEAR
41:WARP
42:BOMB USE
43:TOW STOP
44:UTSUSEMI
45:SCOOP UP
46:EXT BUCKET
47:EXT BREATH
48:PEPE ENTER
49:CARPET
4A:CRITIC
4B:EAT A NUT
4C:DEATH CRY
4D:DEATH OF PEPELOGOO
4E:SPIRITS
4F:GET MEAT
50:FX OFF
51:SONG OFF
52:FINALE 3
FC <Condition>
<FC XX XX YY YY> refers to a condition XXXX that has to be true to display the string at offset of YYYY relative to YYYY.
Strings exist where two <FC>-conditions are present.
Dependancies:
It seems that <F8 XX.XX> is connected to this, but its purpose is unclear at this moment.
Example:
<FC (01 65) (00 11)>
Text #1 if condition is false.<FF>
Text #2 if condition is true.<FF>
- If condition (0165) is true, Text #2 is displayed, which is 0x0011 (17) characters from the 3rd byte of this controller.
Known Values for XXXX:
0165 - gave water to adventurer and saved his life.
FC75FC81FEFC41 <FC 75 FC 81 FE FC 41>
Unknown Controller <FC 75 FC 81 FE FC 41>
FD <FD>
Unknown Controller <FD XX XX XX XX>
FE <FE>
Unknown Controller <FE XX XX>
FF <END>
<FF> marks an end and closes the textboxes.