Author
|
Topic: Wonderswan Hacking Issues (Read 1093 times)
|
Dragonsbrethren
Guest
|
|
« Reply #15 on: August 18, 2007, 10:10:10 am » |
|
So, does this mean that there are no non-ASM ways to even find a table for a WS/WSC game? O.o
~DS
Depends on the game, JCE3000GT and I had absolutely no problems making a table for (And finding text in) FF4 back when we were planning on translating it.
|
|
|
|
DarknessSavior
Guest
|
|
« Reply #16 on: August 20, 2007, 01:01:14 pm » |
|
And what ancient chinese secret did you use to find the table for that (seeing as thats a WSC game, and I couldn't even find the FONT in a WSC game, let alone the table values... >.<)?
~DS
|
|
|
|
taarna23
Guest
|
|
« Reply #17 on: August 20, 2007, 06:11:27 pm » |
|
Well, if it's of any help to those willing to offer their help or advice, the game in question is Shinseiki (or Neon Genesis, it depends on where you look as to how the title is listed) Evangelion: Shito Ikusei (isn't that great? My spell checker hates all four of those words), and it would appear that absolutely none of the graphics in the game are compressed. I recall going through them some time ago, being able to recognize cut up and tiled bits of "cutscene" images, forms of Angels you can raise (contrary to the first post, the game is a life-sim type), rooms you can explore, menus, title graphics, font, everything. I suppose it just confuses me a little as to why only one part of it all would be compressed, but then, I am mostly a graphics person, not much of a romhacker.
Sorry for my long-winded and probably ultimately useless post, I'm a little scatterbrained today. I just wanted to try to get what I know about the game known to others.
|
|
|
|
Dragonsbrethren
Guest
|
|
« Reply #18 on: August 20, 2007, 06:23:39 pm » |
|
And what ancient chinese secret did you use to find the table for that (seeing as thats a WSC game, and I couldn't even find the FONT in a WSC game, let alone the table values... >.<)?
~DS
As I said, it depends on the game. FF4 stored its font in "Genesis" format and the table was easily built from looking at that.
|
|
|
|
Firlet
Guest
|
|
« Reply #19 on: August 21, 2007, 11:02:25 am » |
|
Use subpar oswan-tracer.
Hit '.' at some dialogue to dump RAM. Open 'ram.bin' @ $2500 with 2-bpp planar (Gameboy = WS). You'll see some top-bottom tiles. Quit emulator.
Place a 'hook_wr 0 2500 2600' to log writes to RAM $2500-2600 (current tile cache). Before the dialogue runs, hit '/' and ',' to activate tracing, memory. Play until that screen.
This shows up: [4:1477] W08 = 01 [R-0250D] [4:147a] W08 = f0 [R-0252D]
4:1477 = Memory map address
Our trace file shows us this:
[141463] 4:1463 8b 04 mov ax,ds:[si] ax=0300 bx=0b00 cx=0000 dx=0000 || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [141465] 4:1465 36 01 06 1c 04 add ss:[041ch],ax ax=000d bx=0b00 cx=0000 dx=0000 || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [14146a] 4:146a ba 3e 00 mov dx,003eh ax=000d bx=0b00 cx=0000 dx=0000 || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
; ----------------------------
; read font row
[14146d] 4:146d 32 c0 xor al,al ax=000d bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [14146f] 4:146f 8a 64 02 mov ah,ds:[si+02h] ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
; pixel shifter
[141472] 4:1472 d3 e8 shr ax,cl ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
; write font (normal + overflow)
[141474] 4:1474 08 66 02 or ds:[bp+02h],ah ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [141477] 4:1477 08 46 22 or ds:[bp+22h],al ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
[14147a] 4:147a 45 inc bp ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b40 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [14147b] 4:147b 46 inc si ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b41 sp=09b4 si=3b80 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [14147c] 4:147c 4a dec dx ax=0000 bx=0b00 cx=0000 dx=003e || bp=2b41 sp=09b4 si=3b81 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [14147d] 4:147d 75 ee jnz 146dh ax=0000 bx=0b00 cx=0000 dx=003d || bp=2b41 sp=09b4 si=3b81 di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
; ============================ ; @@@@@@@@@@@@@@@@@@@@@@@@@@@@ ; ============================
[14147f] 4:147f 1f pop ds ax=0000 bx=0b00 cx=0000 dx=0000 || bp=2b7e sp=09b4 si=3bbe di=1000 || cs=4000 ds=2000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f [141480] 4:1480 c3 ret ax=0000 bx=0b00 cx=0000 dx=0000 || bp=2b7e sp=09b6 si=3bbe di=1000 || cs=4000 ds=1000 ss=0000 es=3000 || 2=10 3=12 || 4=14 5=15 6=16 7=17 8=18 9=19 a=1a b=1b c=1c d=1d e=1e f=1f
141474 = ROM address of code
ds:[bp+2] = 2000:[2b40+2] 2=10
-->
(10)0000+2b42 = 102b42 or 100002 (fontrom).
There might be some header bytes. You'll have to check for scripting codes.
|
|
|
|
|