Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,478,692
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-24-24 08:08 PM
Guest: Register | Login

0 users currently in ROM Hacking | 2 guests

Main - ROM Hacking - Seiken Densetsu II (Secret of Mana) Reverse Engineer New thread | New reply


jargon
Posted on 03-24-08 09:41 AM (rev. 4 of 03-25-08 09:46 AM) Link | Quote | ID: 80883


Ninji
Banned until 2010-10-15 for an utterly psychedelic posting style
Level: 36

Posts: 68/247
EXP: 300200
Next: 7910

Since: 12-10-07
From: 480/85260

Last post: 4947 days
Last view: 4605 days
This is what i have from tonight..
som.overworld.split.LZMA.7z

Each ripped sheet is a left-to-right, top-to-bottom order rip of the source over world as a left-to-right, top-to-bottom output image. I ripped as 4x4 pixel tiles.

Next i plan to progressively scan each sheet, simplifying 1/4th at a time in order to remove 4 way mirrors, all 256 output sheets, then recombine them like how the sweet-sixteen college basketball play-off post-season works.

Meaning one at a time I remove all 4 way mirrored clones from 1/4th progressive scan of each of the 256 output sheets. Then I combine each set of 4 and remove all 4 way mirrored clones. Then I use binary split tree in order to reduce each of those results for all 256 raw sheets I ripped tonight.

Eventually, I will end up with a source progressive scan sheet of 4x4 pixel tiles anti four way mirrored for the Seiken Densetsu II (Secret of Mana) over world. The next step being creating a map sheet for the over world consisting of (?)bit tile index and 2 bits of four-way mirror info.

Somewhere along the line i have to implement recolor info. And that is the jist of what I am attempting. Btw, reason I failed so many times in the past was due to blowing all the memory in my video card and all my page memory doing so in one go, without using a binary split tree method.

Wish me luck, and feel free to leave any comments.

-------------------------------------------

-edit- (Sorry, "can't double post twice within a day" somehow got triggered.)

Okay,
I said how I split the Secret of Mana over world into 0x00 through 0xFF 256x256 pixel 24bit sheets of 4x4 pixel tiles mapped left-to-right, top-to-bottom.

It's been 12 minutes and my secondary Brute Force Reverse Engineering Tool, has only 18% simplified just sheet 0x00! This is ridiculous. :/ And each follow-up sheet is going to take a logarithmically plateauing amount of time to process. -.-

Blackhole89, you are a master of the "ioi"... How can I trans-code this algorithm into a parallel-processed shader? The first program I mentioned reconfigured the 24bit over world into the set of images as mentioned in my prior post. My algorithm maps out all the tile x/y's in the current sheet as 0 through n, where 'n' is the last tile in the sheet. it starts at '1' in the top-left though. tile '0' is the reserve blank tile for the final sheet. each entry is earmarked to point at itself.

In a sub-loop it loops through all thus-far noted tiles and resets the earmark to any four-way-mirror matched tile, and exits this inner loop. If the earmark of the current comparison tile in this inner loop doesn't match itself anyways, it skips that cycle.

After that nested loop is done (50% of each sheet pass), it then cycles through all tiles earmarked as their self, skipping any marked as a tile other than itself, starting at tile 0, redrawing the simplified sheet to attach the next pass's sheet so it's top edge meets the simplified sheet's bottom edge, then recurses using that on the next pass.

There are 0x00 through 0xFF passes to do! Blackhole89, how may I easily trans-code this algorithm from a CPU intensive set of loops, into a parallel-processed GPU shader?

Obviously in order to trans-code the CPU intensive algorithm as a GPU intensive shader, the GPU would have to throw generally accepted minimalist algorithmic permutations theory out the window and perform unnecessary extraneous steps within the parallel process pipe in order to actually parallel process in an optimal fashion.

Any ideas Blackhole89?

-edit- (Sorry)

After 45 minutes the first pass only got to 35% before my computer nearly froze and crashed.

No memory is being created nor deleted during the first 50% of a pass, and no processes are being recursed, so I have no idea why my computer slowed down so much by the first 35% of the first pass.

The program should simply run in a linear fashion through the core algorithm. I have no idea what was causing the massive slow-down in the CPU.

This reverse engineering project has become a disaster. -.-

-edit- (GPU shader discussion)
20080325-002811 <+jargon> brute force reverse engineering sucks :|
20080325-002920 <+jargon> it's going to take like 15 hours to simplify the secret of mana overworld to a sheet of unique anti-four-way-mirrored 4x4 pixel tiles x.x
20080325-003341 <+jargon> 3 minutes and its only on 14% of sheet 0x00 of 0x00 thru 0xFF
20080325-003344 <+jargon> :/
20080325-003612 <+jargon> nm took 5 minutes to do 14% of the first sheet x.x
20080325-004837 <+knuck> you're lying
20080325-011936 <+jargon> AB2 is dead
20080325-011946 <+jargon> http://acmlm.kafuka.org/board/thread.php?pid=80883#80883
20080325-011950 <+jargon> :/
20080325-012010 <+knuck> so jargon
20080325-012016 <+knuck> are you normal now
20080325-012021 <+jargon> yes
20080325-012028 <+knuck> what was all that about
20080325-012031 <+knuck> like a month ago or so
20080325-012305 <+jargon> i was thinking of using the GPU shader's CMP pixel operation when overlaying every permutation of two 4x4 pixel tiles, then stacking all the pixels within each permutation using CMP :/
20080325-012320 <+knuck> what gpu
20080325-012324 <+knuck> snes doesnt have a gpu!!
20080325-012334 <+jargon> this would result in a full set of all tiles that match as a truth-table
20080325-012346 <+knuck> snes doesnt have a gpu!!
20080325-012507 <+jargon> obviously i would use the GPU mirror/flip for the left handed one in each pair and then stack using OR of those 4 truth tables
20080325-012520 <+knuck>
20080325-012523 <+knuck> he is at it again
20080325-012523 <+jargon> this would solve for 4-way-mirroring
20080325-012524 <+knuck> sigh
20080325-012534 <+jargon> knuck not snes
20080325-012543 <+knuck> computer gpu?
20080325-012600 <+knuck> what computer gpu has its instruction set known?
20080325-012607 <+jargon> i am using a pc to take a rip of the secret of mana overworld and then simplifying it into a single sheet of 4x4 pixel tiles
20080325-012656 <+jargon> by that i mean four-way-mirror unique 4x4 pixel tiles
20080325-012745 <+jargon> i just haven't figured out how to use the shader to find the remove duplicates that have been identified
20080325-012803 <+knuck> what computer gpu has its instruction set known?
20080325-012810 <+jargon> to find and remove *
20080325-012826 <+jargon> GPU shaders can do mirror/flip/CMP/OR etc
20080325-012916 <+jargon> those are the four layering operations other than mesh permutations
20080325-012930 <+knuck> ah
20080325-012937 <+knuck> by cmp and or i thought you meant the instructions
20080325-012942 <+jargon> GPU's already have the built in ability to perform all possible permutations
20080325-012954 <+knuck> it'd be neat to have a nowadays' geforce's instruction set
20080325-013035 <+jargon> i just can't think of how to remove all the duplicates once the truth table of duplicates is rendered
20080325-013040 <+jargon> :/
20080325-013230 <+jargon> maybe there is a operand in contemporary GPU shaders that remove permutations based on recurring pixel data
20080325-013256 <+jargon> if that were the case i could use that operand in order to render the simplified sheet using the resulting permutation
20080325-013437 <+jargon> which would also allow me in the same fashion to map the secret of mana over world with the indices and mirror info for each unique tile
20080325-013513 <+jargon> thus completing the goal of my reverse engineer
20080325-013606 <+jargon> the next way-point would be somehow using the GPU shader op set in order to remove all re-colors
20080325-013745 <+jargon> there is prolly a topography mapping opcode that resets all pixel colors used in a piece of video memory as another palette based on a permutation order
20080325-013841 <+jargon> this would allow all tiles that have recolors to be mapped the same as each other
20080325-013850 <+jargon> then i just recurse what i already outlined
20080325-013915 <+jargon> only issue would be if the recolor colors two unique colors as the same color :|
20080325-014012 <+jargon> meaning i'd have to somehow count max unique colors used out of all the tiles on a per tile basis
20080325-014047 <+jargon> then ghetto rig some sort of shader that tests for redundant palette entries off that
20080325-014104 <+jargon> but i am tired and i don't feel like delving that deep right now, knuck

____________________
NIHYFDTTMWTMR

Main - ROM Hacking - Seiken Densetsu II (Secret of Mana) Reverse Engineer New thread | New reply

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.020 seconds. (347KB of memory used)
MySQL - queries: 37, rows: 57/58, time: 0.016 seconds.