Dirbaio |
Posted on 08-25-13, 06:25 am in v3.1 Super Mario Bros. - The New Worlds
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3679/4458 Since: 06-08-11 |
You can always turn the cannon into a bonus level with no cannon at all. Or something else, who knows
|
Dirbaio |
Posted on 08-31-13, 12:24 pm in Hey People
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3699/4458 Since: 06-08-11 |
ASM hacks. Lots of ASM hacks.
Because ASM hacks make your hack instantly cooler. Especially if it makes the ROM crash and show the beautiful NSMB debug screen: . That's great gameplay value there |
Dirbaio |
Posted on 11-02-13, 09:57 pm in Board changelog
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3870/4458 Since: 06-08-11 |
Small-ish change: you can now +1 posts in closed threads.
|
Dirbaio |
Posted on 01-21-14, 04:05 pm in test please ignore
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3974/4458 Since: 06-08-11 |
¶?c?????????||????????????????||?~ ::~ :~ :?
??? ? ?? ? ?????? ???? ? ? ? ??????? ???????????????????????? ?????????????????? |
Dirbaio |
Posted on 08-02-14, 11:55 pm in v1.0.1 New Super Mario Bros. 5: Clone Tag Team 2
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4123/4458 Since: 06-08-11 |
fail, I mistook new.nsmbhd.net for my local dev test board and didn't notice.
|
Dirbaio |
Posted on 08-02-17, 09:00 pm in New spoiler tag! (rev. 1 by Dirbaio on 08-02-17, 09:04 pm)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4389/4458 Since: 06-08-11 |
As you may have noticed, the spoiler tag has a new look:
Now spoilers aren't smaller than their contents, so don't use them to compress stuff or hide huge labyrinths of nested spoilers. The spoiler tag is meant for just that, hiding spoilers. Thanks to Arisotura for the idea and first implementation Enjoy! |
Dirbaio |
Posted on 01-19-18, 12:29 am in useless thread
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4396/4458 Since: 06-08-11 |
test
|
Dirbaio |
Posted on 05-02-18, 11:59 pm in Nintendo DS dev hardware! IS-NITRO-EMULATOR & co.
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4410/4458 Since: 06-08-11 |
IS-NITRO-EMULATOR teardownLet's crack it open to see what's inside! This teardown is of an IS-NITRO-EMULATOR of the DS phat variant, without wifi or video options. Opening it up The thing opens up easily, removing screws on the sides and the back. Removing two screws at the bottom side allows you to remove the front plate. Then, removing more screws allows you to pop put the entire stack of boards. There are 4 main boards on this thing stacked together which is quite a lot! Two boards have heatsinks for the power supply transistors, with grey gooey thermal pads that contact the bottom of the case for better thermal dissipation. There are 4 boards. From front to back they are: - DS CPU board - Video board - Main CPU board - Card emu board They all have big connectors between them that join when sandwitched together, plus there's a huge flat colorful cable between the DS CPU board and the card emu board at the side. NDS CPU board This seems to be a special bigger version of the full Nintendo DS hardware. It has the DS CPU chip in it, and the conenction to the controller. The sub-board has space for the Wifi chip, which is not there because this unit does not have the wifi option. Video board This board seems to be for handling the video out. It has one nice big FPGA Interestingly it's fully populated even if this unit doesn't have the video option, which makes me wonder if it's simply a software restriction. In that case it could theoretically be possible to enable it via firmware hacks. Control CPU board This board has a NEC D703103AGJ CPU, which seems to be the central brain of the system. - it controls the USB communications (chip on bottom left is an USB controller) - Status LEDs - DIP switches - Main power supply, with the power switch. It has a serial port at the top white connector. Baud rate 115200, 8 bits, no parity bit, 1 stop bit. It spits out debug information when booting with DIP switch 1 set to ON. Typing into it seems to do nothing (it's not an interactive console, aww...). It is 3.3v. I don't know if it's 5V tolerant, so be VERY careful what serial adapter you use here. I don't know what the connector on the left is. Maybe JTAG? Gamecard emulator board This board does all the gamecard emulation with two huge FPGAs. The 256MB RAM stick is where the emulated ROM image is stored when you load it from the PC software. Interestingly, it's the same form factor as laptop RAM (SODIMM), but it's SDRAM, unlike regular computer RAM like DDR3 or DDR4. It has 1 relay for the GBA slot and 2 relays in the NDS slot sub-board (the black tall rectangles). These are the things that audibly "CLICK!" when you turn on or off the slot1/2 power from the software! DS controller This is the insides of the DS "controller". It's 100% dumb, it has no CPU, it's not a real DS! It receives the screens video from the huge cable and sends back the buttons and touch input. The whole cable and the connection seems to be very well shielded from EMI (with the copper sheet you see) TODO: Post pics of the NDS case. It is a regular DS case, with some extra ad-hoc modifications to fit the PCB at the top when the cable comes out. |
Dirbaio |
Posted on 05-27-21, 10:03 pm in it's different now
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4447/4458 Since: 06-08-11 |
Oh the nostalgia :')
I didn't "give up" on NSMB hacking. It's just that when you have a job that's all day programming, you don't have much energy left for more programming in your free time. It's an awesome hobby if you have the time for it! I learned lots of super useful stuff. For example I'm working on embedded stuff these days, where you occasionally have to deal with ARM assembler, which I learned while NSMB hacking. Maybe someday I'll be back, who knows |
Dirbaio |
Posted on 06-09-23, 02:14 am in test
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4454/4458 Since: 06-08-11 |
asdfasfasf
|
Dirbaio |
Posted on 04-12-24, 07:25 pm in b0rp
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 4457/4458 Since: 06-08-11 |
oh hi there
|
Dirbaio |
Posted on 08-04-12, 04:20 pm in Level list
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2083/4458 Since: 06-08-11 |
I've edited the 1st post to use the table tags, looks much nicer
I have two levels in the works: one with autumn grassland tileset and one with the pyramid one. I'll post them when they're finished |
Dirbaio |
Posted on 08-06-12, 06:57 pm in HEY! YOU! What are you doing in the trash!? (rev. 1 by ImageBot on 11-21-16, 02:14 am)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2100/4458 Since: 06-08-11 |
lol you forgot a newline between the text and the pic.
|
Dirbaio |
Posted on 08-06-12, 07:22 pm in HEY! YOU! What are you doing in the trash!? (rev. 1 by ImageBot on 11-21-16, 02:14 am)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2101/4458 Since: 06-08-11 |
|
Dirbaio |
Posted on 08-07-12, 01:00 am in Say something about who posts before you!
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2107/4458 Since: 06-08-11 |
...Yup.
I begin. And there's nobody above me so I say nothing. |
Dirbaio |
Posted on 08-25-12, 10:08 pm in ASM hacking project template! (rev. 1 by Dirbaio on 12-09-12, 11:36 pm)
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2375/4458 Since: 06-08-11 |
So, if you want to make ASM hacks, start off by downloading this thing.
It comes with some useful code too I'll update it from time to time to work with newer DeviktPro versions, or to update the (ugh) symbols.x file. Download: https://github.com/Dirbaio/ASMPatchTemplate/archive/master.zip GitHub: https://github.com/Dirbaio/ASMPatchTemplate See tutorial How ASM hacks are setup for details on how to use it. |
Dirbaio |
Posted on 10-01-12, 08:32 pm in No more sprite set limitation in MvsL!
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 2607/4458 Since: 06-08-11 |
So here goes the explanation of how this works.
Files in NSMB are referenced by something I call the "Ext ID". It contains two file IDs. One is used in singleplayer mode, and the other one is used in multiplayer mode. These two IDs can point to a normal file in ROM or a file in a NARC. These IDs are used everywhere in the code. In all the File ID tables, and in all the code that loads files. For example this is the ExtId stored in the overlay 0 table that refers to the castle tileset NCG: 0xC306008C The second half is the ID used in singleplayer: 0x008C. This is 140 in dec. Add 131 (the overlay count) and you get the file id to the castle NCG. The first half is the ID used in multiplayer. It refers to a file in the NARC. IDs that point to the narc are like 0xCxyy. x is the NARC number in a table at 0x0203A6C0, and yy is the file ID inside the narc. For most files used in the game's code, the first half of the ID is 0x0000 so the game crashes while trying to load them if MvsL mode. The files that are used from MvsL (tilesets, graphics, Maril models and animations, sprite files...) do have something set in the first half. So what I did was modify the function that "chooses" which File ID is used (I called it calcFileID) to always use the second ID. So now NSMB can load any file in MvsL mode! It also means that there's no need to use the NARC patch buttons, all the files are loaded from the ROM! BUT there was yet another problem: Overlays. Every sprite set maps to an overlay. All the overlays that belong to a sprite set are loaded at the same RAM address, so only one of them can be loaded at a time. (This is why it's nearly impossible to "move" sprites from one sprite set to another. Moving code is hard as fuck) I found the code that loads these sprites BTW. There's a table that maps sprite sets to overlay IDs. Yay. But because in multiplayer, nearly no sprite sets are used, all that RAM area for sprite set overlays is unused. So Nintendo thought it was a good idea to not waste RAM, so they created an overlay that filled all this empty space and used it for a heap. This overlay was using the RAM region that's used for sprite set overlays, so NSMB crashed trying to load them. This is overlay 53. It has only 128 bytes of code, but the BSS section of it is HUGE and occupies the RAM space used for sprite sets. And they used it to load something (I haven't checked what. I think it's the NARCs but I'm not sure). (BSS section is like a part of the overlay that's used, but it's not stored in the overlay file. Overlays have two sizes: the overlay code size and the BSS size. The total size is the sum). he code for the overlay just creates a heap occupying all this BSS area, and stores a pointer to it somewhere else. There are only 3 functions in the overlay. One for getting a pointer to the heap, another for destroying it, and another for creating it. So what I did was to change these functions. The create function does nothing and just returns a pointer to the main heap. The destroy function does nothing (It's a bad idea to destroy the main heap, lol). So now all these "somethings" are loaded into the main RAM, and that BSS size is not used anymore. Good. So I went to the overlay table and set the BSS size to 0. And now there's space to load the sprite set overlays, and it's possible to use all the sprite sets in MvsL. Cool .... I haven't tested all the sprite sets, and I'm not sure if they all work. And I no longer have access to two DS's I'll maybe get my friend to lend it to me for some time and I'll test more stuff Whoa this was a long post. |
Dirbaio |
Posted on 04-08-13, 01:13 am in Networked ROM editing beta-testing!
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3231/4458 Since: 06-08-11 |
So yes, it's done!
What this does is access the ROM remotely. When you open a file, it gets downloaded from the server. When you save it, it gets uploaded and saved to the ROM in the server. Also no two people can edit the same file at once. So no collaborative level editing (for now). If you try to do it you'll get the "File is already being edited" error. So yeah. Go download b368 and connect it to nsmbhd.net port 7373, and help beta-test it! When this is stable enough, we could use it for organizing stuff in the Community Remix. If we do, I'll add username/password authentication based on NSMBHD accounts and only whitelist trusted people. Known issues: - It's a bit slow. - Error handling sucks: if you lose connection everything goes boom. Server source code is here, in case someone's interested: (It's Java) https://github.com/Dirbaio/jnds |
Dirbaio |
Posted on 06-01-13, 07:10 pm in NSMB Overlay list (rev. 1 by Dirbaio on 06-06-13, 01:57 am)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3354/4458 Since: 06-08-11 |
So I've been looking at the overlay structure of the ROM. Here's a table of what overlay is what thing.
It shows both EUR and USA overlays. EUR has 4 more overlays, but I believe these are for minigames, so it's not important for us. The main game overlays are exactly the same. More interesting things: 0x02085D0C (on USA ROM) contains a list of all the loaded overlays. It is a list of 16 times a 16-byte structure containing the following: 4 bytes: Overlay ID
4 bytes: Overlay start adress
4 bytes: Overlay end adress
4 bytes: Overlay reference count (How many "times" the overlay is used. If it's 0 it's loaded but not used, so the game can load another overlay in that adress range) This is useful because using a RAM viewer we can quickly see which overlay is being used. That's how I figured out most of the things below. So here's the huge table:
|
Dirbaio |
Posted on 08-05-13, 04:55 pm in NSMB Intro - Does anyone care about it?
|
Super Mario
( ͡° ͜ʖ ͡°) Karma: 10081 Posts: 3586/4458 Since: 06-08-11 |
Well
Having a custom intro would be cool. But if there's no custom intro, it would be better to have a hack to disable it than have the player watch the old intro over and over again. At least in my opinion, the intro gets annoying because there's no way to skip it :| |