Pages: 12345 »
Posted on 11-21-12, 10:16 pm in HELP WIT MY ROM HCK PLZ!!!1112 (rev. 1 by ImageBot on 11-21-16, 02:34 am)
☭ coffee and cream


Karma: 10542
Posts: 774/2780
Since: 06-26-11
hey i r dumb noob who hijacks others threads can u help me plz i want 2 add wrold 9 with ice castle and 3 bowsers that spit ice and kamek and mean yoshi but theres no buton for it in nsmb editor can u add button for it plz


_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 11-17-13, 07:06 pm in Give me your levels!
☭ coffee and cream


Karma: 10542
Posts: 1278/2780
Since: 06-26-11
Translation:

Hey I want to make a hack, can someone make the hack for me while I get all the credit?
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 07-06-13, 01:18 am in Sprite hacking, and the first custom NSMBDS sprite (rev. 5 by ImageBot on 11-21-16, 02:35 am)
☭ coffee and cream


Karma: 10542
Posts: 1025/2780
Since: 06-26-11
Slap me a billion times if my title is wrong. I don't think anything like that has been done before, though.

This custom sprite is very basic. It is built off the useless sprite #100. All it does is display a 1x2 quad with a texture on it.



For those who are interested into making their own sprites, here's the code: source.zip
You extract that in the source folder of the ASM hacking template package. You also need to replace your symbols.x with this one: http://nsmbhd.net/get.php?id=1431

Basically, this hooks sprite 100's constructor to use our custom vtable instead of the default one. The rendering is handled in sprite100.c. It works by writing to the GX registers directly, which is what the game does for simple stuff like flat quads.

The whole part about loading a texture is explained there: Reversing the 3D tile system

Known issue: this doesn't clean up the texture when the sprite is destroyed. The collider created by this sprite is also always in the colliders list.

Questions? Ask me.


Have fun
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 07-03-14, 11:02 pm in Stupid features
☭ coffee and cream


Karma: 10542
Posts: 1476/2780
Since: 06-26-11
Make a button that bans Thierry.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 08-02-14, 06:47 pm in 'Cutting' water and lava
☭ coffee and cream


Karma: 10542
Posts: 1501/2780
Since: 06-26-11
Fake.

SKJmoron is an attention whore, that's all.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 08-26-16, 09:27 pm in delete
☭ coffee and cream


Karma: 10542
Posts: 2002/2780
Since: 06-26-11
Luluca please don't take drugs before posting.


More seriously, another shitpost of that kind and you're getting a ban.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 10-28-17, 12:18 pm in How Do I Make A Respawnable Donut Lift?
☭ coffee and cream


Karma: 10542
Posts: 2503/2780
Since: 06-26-11
donuts are bad, and so are donut lifts, apparently
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 01-21-17, 01:40 pm in SO CLOSE!
☭ coffee and cream


Karma: 10542
Posts: 2242/2780
Since: 06-26-11
late, but yeah, it was that.


anyway, melonDS is a thing!


as for 'taking ancient desmume', well, I'd have to backport all the bugfixes and shit. I'd also need to take the yopyop-era code to get something not too bad, and it didn't emulate much back then.


relatedly, a bit of history about desmume, which is also a fine piece of irony.

this post from yopyop says why desmume was created.

translation courtesy your overlord:
Posted by yopyop
yop,
Thanks a lot, I love the A and B ones.
Regarding the bugs the first one isn't really one. Actually I was researching palettes for textures and I needed to search the whole memory to find what matched best what should be displayed, and as I'm a bit lazy I hijacked the Close button to browse memory (the X is enough to close the window).

The second one isn't a bug, it's one of the reasons why I started this project. Actually the other emulators (except iDeaS I think but you can't access the disassembler) only emulate the ARM9, and since I wanted to understand how wifi worked I started making my own disassembler which has become my own emu (too lazy to follow the instruction flow in my mind). Thus the two windows are the ARM7 and ARM9 disassemblers (same for memory but the windows have the same title).

yopyop

edit: there, added the icon
And the first bug fixed
Thanks again for the icons, if you prefer another one let me know. And if you have other bugs don't hesitate.

_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 11-16-13, 08:37 pm in release!yay!on hold! Grand Super Mario Bros.
☭ coffee and cream


Karma: 10542
Posts: 1269/2780
Since: 06-26-11
We'd love to, but we can't. You have left the board forever. Reviewing your hack would be pointless.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 02-23-14, 06:46 pm in MKDS hacking revival?
☭ coffee and cream


Karma: 10542
Posts: 1344/2780
Since: 06-26-11
For a while, there was a nice interest in MKDS hacking. I'm still surprised it worked so well, given the quality of the 'MKDS course modifier by MKDS'.

But obviously, it died. I guess because Gericom's tool was unreliable and hard to use, model importing is still only possible with software stolen from Nintendo, and lately DSHack died. And of course there's novelty wearing off, as always.

The idea appeared when they found out a DSHack test board running off ABXD, that is still online. Shit can't be done with it, though, as Yami (the server owner) has vanished from the internet.

This gave me an idea. Trying again. But this time, we'd have a proper toolset. Namely, a course editor that is easy to use, and model importing tools (that would also benefit to NSMB since the format is the same).

We'd also have a good knowledge base with all kinds of technical information. Not just "MKDS course shitifer tutorial #54644".

Development would follow the right route. Not adding a billion viewers for random game files and other useless toys. But implementing what the community wants.


Well uh, are there still people interested? There was a nice effort in the beginning, after all.

Besides, MKDS hacking can be seen as a stepping stone to MKWii. Entrance barrier is lower.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 01-11-15, 12:43 am in bubbles
☭ coffee and cream


Karma: 10542
Posts: 1644/2780
Since: 06-26-11
Best thread title ever.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 01-28-15, 05:20 pm, deleted by Thierry: rude
Posted on 10-29-16, 06:48 pm in NSMBHD is NOT moving
☭ coffee and cream


Karma: 10542
Posts: 2132/2780
Since: 06-26-11
What I have more trouble understanding is why the hell do some people run to me about RHCafe being down. I don't own that board. Seriously, those people need to stop assuming I own the internet or am the magical absolute knowledge base.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 07-07-17, 11:38 am in how do we bring Dirbaio back to life
☭ coffee and cream


Karma: 10542
Posts: 2397/2780
Since: 06-26-11
well, there's a bug I want fixed, and Dirbaio is dead again (surprise)


so, how should we proceed to bring him back to life?


I tried shoving big red text in his face, but that isn't working.


I thought about taking the board down until he finally does something.

but I don't like the idea of taking the community in hostage.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 10-27-12, 08:01 pm in Continue this story!
☭ coffee and cream


Karma: 10542
Posts: 738/2780
Since: 06-26-11
 Arisotura smells an unusual smell in the air. It's like meat being cooked.  Arisotura then realizes that his brain is overheating and slowly melting as he tries to decipher  P-SwitchPusher's last post.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 12-10-12, 12:28 am in Coop experiment: Getting 1-1 into multiplayer (rev. 11 by  Dirbaio on 01-13-13, 01:19 am)
☭ coffee and cream


Karma: 10542
Posts: 828/2780
Since: 06-26-11
As title says. We take singleplayer 1-1 and import it into a MvsL level slot. We also apply Dirbaio's unlimited MvsL spriteset hack.

It is possible. Not exactly coop but more like a race.



Together with Dirbaio, we worked on getting past all the crashes encountered. The following ASM hack must be used:
repl_02009568:
        cmp r0, #20
        ADDEQ     SP, SP, #0x4C
        LDMEQFD   SP!, {R4-R11,PC}
        MOV R9, #0
        bx lr
       
repl_020B39C8:
        bx lr
       
repl_0209C4E0:
        bx lr

repl_02020738:
        bx lr

PLUS http://dirbaio.net/d/paste/afbKlaPl.txt
Credits go to Dirbaio who figured out most if not all of the above ASM hack.

You'll also need to remove certain troublecausing sprites from the level for it to work. Star coins and sprite 264 must be removed. I also removed the scroll stop sprites and invisible block sprites, but those should be fine.


Technical details

The first part of the above ASM hack causes overlay 20 to never be loaded.

Overlay 20 corresponds to sprite set 16-9 (battle stars and platforms). It is forcefully loaded right after two players connect for a MvsL game, which makes us unable to load any other sprite set in slot 16. Slot 16 is where we have the flagpole and bosses, so this is bad.

With this hack, we can load any sprite set in slot 16 without getting a crash. The downside of it is that sprite set 16-9 is unavailable, so no platform generator. But: there are TONS of references to loadOverlay(). If someone would find the one reference that calls it with a fixed ID of 20...

The other parts of the ASM hack mostly remove certain checks for the MvsL mode, that cause some required data to not be loaded. They also remove the code that separately spawns MvsL battle stars.


You then get to play 1-1 in MvsL mode.

When you reach the flagpole, you go down it as usual. Then, it says 'Mario Wins' (or 'Luigi Wins' if you're Luigi). The other player is told that they've lost.



Remaining issues:
* tileset 2 isn't loaded, which causes Mario to not end the level properly (and yet another lockup). Replacing the castle with a solid block fixes it temporarily. Dirbaio's latest ASM hack (the PLUS link) should fix it
* graphics that should show the number of points when using the flagpole, are instead garbled
* music and sound sets in MvsL mode are hardcoded
* no matter the parameters of the two first entrances, Mario and Luigi always start from pipes
* breaking the flagpole with Mega Mario causes the other player to not lose. The two players are then desynced. Even if you make the other player win and then make them play another game, they will stay desynced.

Because apparently lots of things aren't loaded in MvsL mode.

When Mario/Luigi ends the hacked level, oddly, no victory is counted at either side. Victory counts are likely related to the battle star sprites.


To be tested:
* the Mega Goomba boss fight. Mega Goomba is featured in the early videos, however there's only one player battling it. Perhaps it still has multiplayer code though? Also, given the sheer number of MvsL-mode checks and stuff in the code, and how boss sprites are crashy in abnormal conditions, would a boss room even work in MvsL mode?


This also gives us more insights on how NSMB has been programmed.
* the so-called coop mode was more like a race. Reaching the flagpole makes other players lose, unlike the NSMBWii flagpole.
* at that time, Mega Mario wasn't supposed to be able to break flagpoles. Breaking a flagpole doesn't make other players lose, which indicates that this feature was added after coop was scrapped.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 07-05-13, 12:07 am in Reversing the 3D tile system (rev. 6 by  Arisotura on 07-05-13, 08:20 pm)
☭ coffee and cream


Karma: 10542
Posts: 1023/2780
Since: 06-26-11
This is mostly a findings dump.

0x020C7CEC: table that manages 3D tile rendering for Jyotyu (other similar tables must exist for other tilesets). The table holds one byte per tile, for tiles 112-255.

Each byte is the index of the tile to render. Indexes are universal, for example, you can have the game render a fence instead of a pipe. You just need to find the right values.

2D water tiles can be used in that table too (values are 0x78 for water body and 0x79 for water top). However, the 2D water doesn't use the tables. Instead, the code has another special case for it (tiles 41, 147, 148).

It is worth noting that tile 41 uses 3D tile 0x78, and the 2D tile shows a coin. The object that uses that tile (object 87) is a coin in 2D water. This means that the 3D tile system overlays 3D tiles on top of 2D tiles, which would allow for some fancy stuff.


0x020F438C: the function responsible for drawing 3D tiles. Yet to be done: reverse it, and find out how adding 3D tiles would work.


0x020AF2DC: function responsible for loading the textures used by the 3D tiles.


0x02121EC0: table listing all the textures to load for 3D tiles. Each entry is 12 bytes: bytes 0-3 -> ext file ID of the file to load from, bytes 4-7 -> ID of the texture to choose inside the file, bytes 8-9 -> palette offset in 16-byte steps

They use the palette offset trick there to do the multiple pipe colors (0x00 = green, 0x20 = red, 0x40 = yellow). It should be possible to reuse that trick to make proper blue pipes, and even more!

The table contains 142 entries. Only the first 68 are loaded in MvsL mode.


0x0212A86C: table holding the parameters for the textures once they're loaded. 8 bytes per entry: bytes 0-3 -> texture parameters, bytes 4-7 -> palette base. Both values can be directly passed to GX registers TEXIMAGE_PARAM and PLTT_BASE (0x040004A8 and 0x040004AC) (or FIFO commands 0x2A and 0x2B).


Process to load a texture:

• Call loadFileByExtId_3dModel() with appropriate parameters (R0 = file ext ID, R1 = 1 if file is LZ compressed).
• Call NNS_G3dGetTex() with R0 = the value returned by loadFile_blahblah().
• Call function at 0x02019AFC with R0 = the value returned by NNS_G3dGetTex(), R1 = the ID of the texture to retrieve, and R2 = a pointer to a dword where the texparams for the texture will be stored.
• Call function at 0x02019A88 with R0 = the value returned by NNS_G3dGetTex(), R1 = 0, and R2 = a pointer to a dword where the palettebase for the texture will be stored.

Once you got your texparams and palettebase, you can draw quads and other shit using that texture easily. If you want to pull the same trick that is used for colored pipes, you'll need to remember to add the right value to the palettebase, though.


For hacking the 3D tile system: looking for refs to 0x020C7CEC and looking around those places should give you an idea of all the special cases that exist for 3D tiles.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 11-12-13, 06:58 pm in Post bugs and suggestions in this thread
☭ coffee and cream


Karma: 10542
Posts: 1260/2780
Since: 06-26-11
yay, let's turn the board into Facebook
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 09-30-14, 09:46 pm in Leaving This Place
☭ coffee and cream


Karma: 10542
Posts: 1521/2780
Since: 06-26-11
Who cares?
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Posted on 03-14-15, 03:02 pm in U have to see this
☭ coffee and cream


Karma: 10542
Posts: 1704/2780
Since: 06-26-11
Posted by aboood40091
So, yeah, all my work for 2 weeks, here it is.
I won't release this because it has a lot of errors.
You all know that RoadrunnerWMC will release his editor sooner or later so wait for it.

Edit: Oh, and, I got the XMLs from here.

Uh, you didn't make it. Grop, RoadrunnerWMC and Hiccup did.


Go away like the thieving idiot you are.
_________________________
Kuribo64 - RH-fucking-cafe - Kafuka

zrghij
Pages: 12345 »