+  RHDN Forum Archive
|-+  Romhacking
| |-+  ROM Hacking Discussion
| | |-+  Wonderswan Hacking Issues
Pages: [1] 2
Author Topic: Wonderswan Hacking Issues  (Read 1093 times)
DarknessSavior
Guest
« on: August 15, 2007, 02:15:08 pm »

Basically, this comes down to tables. Taarna23 and I were interested in hacking the Evangelion RPGish game for Wonderswan. I suck at relative searching, and she's had some success with it in the past, so she agreed to give it a go. I gave her all the information that I already had (wildcards to search for two-byte characters, the tip NC gave me about searching in the order the font is stored, etc...) and still, nothing. She was up until 6 am this morning trying to get a damned table working, came up with two different results and neither were correct.

Is there some special trick to Wonderswan that we're just not privy to? O.o

~DS
Spikeman
Guest
« Reply #1 on: August 15, 2007, 04:56:48 pm »

I've never had any luck with Wonderswan games either. From my experiences I'm guessing it's compression, which is unfortunate since all of the debuggers for Wonderswan suck. Roll Eyes
rmco2003
Guest
« Reply #2 on: August 16, 2007, 03:00:48 am »

It's a bit of a mix and match with wonderswan games, different companies use different techniques for font tables, graphics storage, etc. It might be compressed, or it might use a really funky text storage scheme.

Your best bet is using a debugger to find out exactly where it's loading the text from and how it's stored.
tomaitheous
Guest
« Reply #3 on: August 16, 2007, 06:22:55 pm »

Quote from: Spikeman on August 15, 2007, 04:56:48 pm
I've never had any luck with Wonderswan games either. From my experiences I'm guessing it's compression, which is unfortunate since all of the debuggers for Wonderswan suck. Roll Eyes

 I guessing you haven't tried mednafen then? It has everything you need to track and find the decompression routine for WS/C. If by chance some important feature is missing, then go to the forums and put in a request (or modify the source yourself  Wink ).  (Hint: the debugger has some undocumented features too).
Normmatt
Guest
« Reply #4 on: August 16, 2007, 11:29:34 pm »

the main thing i don't like about medafen is the documentation sucks and is horribly outdated so i never could workout how to do much with it
Nightcrawler
Guest
« Reply #5 on: August 17, 2007, 07:44:07 am »

It doesn't look like we have Mednafan in our database. Somebody should probably add it, so the next time the Wonderswan hacking question comes up (every few months), we will have something in the database for it.
Spikeman
Guest
« Reply #6 on: August 17, 2007, 08:24:31 am »

Quote from: Nightcrawler on August 17, 2007, 07:44:07 am
It doesn't look like we have Mednafan in our database. Somebody should probably add it, so the next time the Wonderswan hacking question comes up (every few months), we will have something in the database for it.

I submitted it. Smiley
Nightcrawler
Guest
« Reply #7 on: August 17, 2007, 09:02:39 am »

We need some description information on it's debugging capabilities. That's the reason it would be hosted here anyway. Does it debug all those systems?

Maybe write up a brief paragraph for us here and we'll add. No need to resubmit.
Spikeman
Guest
« Reply #8 on: August 17, 2007, 12:20:40 pm »

I would, but I haven't really used it before today. Maybe someone who has experience with it (tomaitheous?) can.
RedComet
Guest
« Reply #9 on: August 17, 2007, 01:23:40 pm »

I haven't used it since last year and they've added a LOT of new debugging tools since then.
DarknessSavior
Guest
« Reply #10 on: August 17, 2007, 02:18:03 pm »

So, does this mean that there are no non-ASM ways to even find a table for a WS/WSC game? O.o

~DS
RedComet
Guest
« Reply #11 on: August 17, 2007, 02:31:00 pm »

I doubt that. Are there no non-ASM ways to crack batshit formats? No. I seem to recall Kitsune saying he and D cracked a weird graphics format a while back. So it isn't always necessary.
Kitsune Sniper
Guest
« Reply #12 on: August 17, 2007, 03:32:21 pm »

Quote from: RedComet on August 17, 2007, 02:31:00 pm
I doubt that. Are there no non-ASM ways to crack batshit formats? No. I seem to recall Kitsune saying he and D cracked a weird graphics format a while back. So it isn't always necessary.

No, D cracked it. He only asked me for a bit of advice, and I really couldn't help him that much at all. I figured out one tiny part and he figured out the rest for himself. Smiley

Oh and we did it without ASM mods, just a lot of fucking around in Feidian. Tongue
tomaitheous
Guest
« Reply #13 on: August 18, 2007, 01:53:47 am »


 The only debuggers active in mednafen are NES, PCE,WS/C, and PCFX. Here's a list of the keys for PCE debugger part...


Mednafen:

PCE debugger keys.

 alt+d opens the debugger mode.

 alt+1(opens on default) is the main debug window with code window, short memory window, hardware and cpu regs, disassembled display, and zeropage.
    s/S - steps though the code one instruction at a time.
    r/R - runs until breakpoints encountered.
    i/I - forces an interrupt.
    l/L - logs to a text file. Calling the logging parameter again and clearing it turns it back off.
    p/P - low level poke. Change a value at a specific address. format nnnn nn (16bit addr, space, 8bit value).
    m/M - change the memory window between logical and physical layout.
    shift+o - sets break points on opcodes values
    shift+r  - sets break points on read addresses.
    shift+w - sets break points on write addresses.
    shift+p - high level poke. Change a value at a specific address. format nnnn nn (16bit addr, space, 8bit value).
    All addresses are in hex and are *not* proceeded by a hex notation. You can do a range of addresses by placing the "-" between them:
      95C1-95FF
    For physical addresses you can use the 21bit address or bank:logical address system. The physical address needs to be proceeded by an "*":
     *D0000 is the same as *68:0000. For ranges of physical addresses you only need to put the "*" on the first address.
    Note: There is a bug in the current version. If you put a single address break point after a range address, it won't be recognized. You must place
             all range addresses after single addresses in the parameter window.

   cntrl+r - sets the read breakpoint addresses for vram (kwords)
   cntrl+w - sets the write breakpoint addresses for vram (kwords)
   Note: There is a bug in the current version. If either single or range address falls with in a block transfer instruction (DMA) but is not the first address
            write, then it will not trigger.

   Read breakpoints can also be set and removed using the "spacebar" in the disassemble code window.

   left/right - changes between the disassemble code window and hardware reg lists.

   Disassemble code window:
     enter - allows you to change the starting offset of the disassembler window.
     Up/down - scrolls the window up or down.
     page up/down - page scrolls the window up or down

   Memory window:
     shift+enter - allows you to change the starting offset of the memory window.
     shift+Up/down - scrolls the window up or down.
     shift+page up/down - page scrolls the window up or down

   Regs list
     enter - allows you to change the contents of the current highlighted register (cpu/vdc/vce/psg/etc).
     up/down - scrolls up and down the register list.





 alt+2 is the vram tile and sprite viewer.
    left/right keys switch between tile and sprite viewing mode
    up/down keys scroll the window
    "," / "." select the palette block to view the tile/sprites with. Note: palette # -1 is a grey scale internal palette - not based on the games color configuration.
    Placing the mouse pointer over the tile/sprite gives the tile vram address in kwords and bat format (kword_addr/0x10)




 alt+3 is the hex editor window
    left/right scrolls the cursor left or right in 1 byte increments
    up/down scrolls the cursor in 1 line increments
    Insert toggle write mode on/off. When in write mode, it allows you to type in a new hex value.
    "," / "." switches the memory viewer "area". These areas are ADPCM, CPU logical, CPU physical, RAM(bank $F8), VCE pal ram, VDC (v)RAM,
               PSG chan 1 sample ram, chan 2 ram, chan 3 ram, chan 4 ram, chan 5 ram, chan 6 ram
    s/S allows you search for single or multiple hex value(s)
    r/R relative/delta search ( haven't used it)
    t/T text search
    c/C change the character decoder for the text display at the bottom of the window. I only know of shift_jis and ascii as of current.
    d/D dump and area of memory
    l/L  load a file into memory
    g/G goto - jumps to an address.




 alt+4 the logging window.
    t/T enables/disables logging of the CD sector reads.



You can savestate at any point in the debugger. If you need to change savestate slots, then you'll have to exit the debugger window to do so (alt+d).
F5 is savestate, F7 is loadstate, F9 takes a snapshot.

Nightcrawler
Guest
« Reply #14 on: August 18, 2007, 07:57:51 am »

Added the entry to the database. I didn't think it necessary to add all the key information. Some of that is available in the documentation. Anyway, if anybody can write a better description, nobody is stopping you from doing so. Smiley
Pages: [1] 2  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC