Language…
11 users online: Brakkie, idealiter, jarbar3000, lordkronos100, Mapping_bl, Mariotag1, marleymm, MorrieTheMagpie, NerDose, OEO6, RZ1 - Guests: 39 - Bots: 208
Users: 55,591 (2,465 active)
Latest user: Amogus_men

ASM Projects show-off thread

  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 154
  • 155
  • 156
What?!?! How did you install the chip? How would you install the chip? What's the code like? Are there any specialties? Holy cow, Ersanio, that's incredible!
bio 'installed the super fx' (one byte hack in ROM) a couple years back to do some special effects on the mario sprite although he never took it past using it as a coprocessor i think.

the sfx instruction set is overall less readable than 816 imho but totally manageable, it's all those prefix instructions that clutter up the code (FROM,TO,WITH,ALT1/2).

maxx: incrementing a word is trivial with anything:

Code
LM R0,($1000) ;load from ram in current bank @ 1000 for example
INC R0 ;++
SM ($1000),R0 ;back it goes


using book2.pdf notation here. there's a caveat with working with odd addresses but not going into that.

people said the same thing about 3d stuff being in smw when bio did it although actually using the plotter + the math involved means you need to know alot more than how to increment a memory address to get even just rotation in there.
HyperHacker
I wonder if SMW's VRAM allocation even makes it feasible to use scaling and rotation? You might have to have dynamic allocation, giving each sprite on the screen its own tiles.

I always thought the SA-1 would be a better chip to use in a hack. It's a 65816, clocked at ~10mhz with some nice enhancements. The lower clock speed (compared to 21mhz for the SFX2) might make 3D less feasible, but I really don't think we're going to see Star Fox levels ported to SMW any time soon, and as I understand it the SFX instruction set is poorly documented, so the SA-1 has the advantage of being easier to use.
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
Quote
I wonder if SMW's VRAM allocation even makes it feasible to use scaling and rotation? You might have to have dynamic allocation, giving each sprite on the screen its own tiles.


http://www.youtube.com/watch?v=2SMob3zRzhI

i made a patch based of smwedit's original and a sprite routine that reserved tiles which just DMA'd (to $2180) sprite tiles from ROM which were uploaded from a buffer in WRAM to the last 2kb of the sprite graphics in vram. a bunch of sprites here use it (i think it was just me and smwedit making them). decent compromise without actually getting a coprocessor in there.

sa-1 is easier to use for sure you don't have to learn a new language just the registers to control it from both ends. cached SFX code outpaces without contest though depends on how much extra processing whatever you're doing needs. then again emulators are hideously inaccurate with SFX, to the point where the speed is broken and there's always a cache miss (doesn't emulate the 512 bytes). might have changed since i tried though.

SFX is 100% documented in book2.pdf. everything is there.

edit: almost everything it's missing a couple opcodes but they are mostly covered in 2 different sections.
I made another powerup, this one is called "Power Boots".
http://www.youtube.com/watch?v=e4NtWcmSbOo

It lets you do three things: push crates, pick up blocks and break through blocks. There is a problem with the crate but its not that major.
Originally posted by HyperHacker
I wonder if SMW's VRAM allocation even makes it feasible to use scaling and rotation?

I remember someone doing the scaling effect on a custom sprite using SuperFX. So... It is possible (I guess).
I made some HDMA effects without a kit.
This isn't really an accomplishment because Roy basically walked me through it. Heh.





Just some random experimentation.
My first experiment with the DSP-1.
Okay, the relation between the decreasing of the 1s timer and the coin counter might not be fully optimal - since my formula for it isn't -, but focus on the 10s counter.
Basically this is a simple multiplication - but the DSP-1 can do much more. It is used in pseudo-3D position calculation and angle calculation, too. Games such as Pilotwings make heavy use of these functions.
This type of multiplication is still better than $4202 and $4203 in two aspects:

- 1. The multiplicand and multiplier have four digits, of which the lower byte can be told to form some sort of fraction. The actual formula is :
A x B >> 15 = Result.
>> 15 instead of >> 16, probably, to get more accurate results. In this example I just LSR'd the result 1 time extra.
Either way, this concludes that the DSP-1 hands out much more accurate results than $4216/$4217 do.
- 2. Absolutely NO NOPs are needed for multiplication. I repeat, NO NOPs!.
The DSP-1 runs on 7.68 MHz (2-2.5 times as fast as the SNES CPU!) which means actions are done way faster. I wonder if SNES auto-halts for the DSP-1 to give a sign when it's done, or if NOPs are still needed in the case of actions that require a large amount of cycles, such as projector calculation.

Moral of the story: SNES Dev book2.pdf wins.

Now we're at the topic of pseudo-3D, why not show you my current Mode 7 level:



Edit: Also the stuff left of Mario is an island. Please don't look too much at it - it's terrifying. I'm gonna make new land tiles anyway.
--------> Don't follow "Find Roy's Dignity", my hack. Because it's pretty outdated. <--------
HyperHacker
Oooooooh.

I can see a potential problem with all these expansion chips. Suppose some 1337 h4x0r makes a sprite using SuperFX... and then someone else makes one using DSP-1. You wouldn't be able to use both in the same hack.

It might be nice if we decided on a specific chip. I assume since they're all basically beefed-up coprocessors, the most powerful one can be used for the same tasks as any of the others. I think that's SuperFX. Does it have all the SA-1 features though, like SRAM banking and timers?

How do you have the scorebar in mode 7 anyway? I wanted to guess you switched modes after a certain scanline, but doesn't Bowser pass over the scorebar at some point?
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
Originally posted by HyperHacker
Oooooooh.

I can see a potential problem with all these expansion chips. Suppose some 1337 h4x0r makes a sprite using SuperFX... and then someone else makes one using DSP-1. You wouldn't be able to use both in the same hack.

It might be nice if we decided on a specific chip. I assume since they're all basically beefed-up coprocessors, the most powerful one can be used for the same tasks as any of the others. I think that's SuperFX. Does it have all the SA-1 features though, like SRAM banking and timers?

How do you have the scorebar in mode 7 anyway? I wanted to guess you switched modes after a certain scanline, but doesn't Bowser pass over the scorebar at some point?


Yeah, SuperFx is definitely stronger than DSP-1. Not sure about SA-1.
Another downpoint is that DSP-1 limits ROMs to 1 MB. D:
Although I believe SuperFx does not have all powerful complex math functions DSP-1 has, but feel free to prove me wrong.

As for the scorebar - I'm not using Bowser's room for this. But yeah, he can get all over the screen so that's why the status bar wasn't activated in his battle.
You can basically enable the status bar in Mode 7, on layer 3, by using IRQ. SMW uses IRQ to split the screen apart in two halves (well, not equal halves but you get the idea) - the upper one using Mode 1, the bottom one using Mode 7. This is why I also easily got the clouds on layer 1, without making them scroll.

Basically I'm not the guy to explain IRQ from A to Z, but anyway, it achieves that by using the interrupt routine, the V-Counter and what not. I should study the IRQ routine some more.
--------> Don't follow "Find Roy's Dignity", my hack. Because it's pretty outdated. <--------
HyperHacker
Ah, that's right, there was no status bar in the Bowser battle. So you do just switch modes.

I wonder about the possibility of making a minimalist status bar entirely out of sprites. Only display the most important information, such as the timer, and have the rest on the overworld and/or a pause screen.
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
Originally posted by HyperHacker
Ah, that's right, there was no status bar in the Bowser battle. So you do just switch modes.

I wonder about the possibility of making a minimalist status bar entirely out of sprites. Only display the most important information, such as the timer, and have the rest on the overworld and/or a pause screen.


Yeah - making a status bar out of sprites is very possible. In the Bowser Battle, the item box square was actually a sprite, too.

The other thing would probably require an OW ASM hack and/or a pause routine ASM hack. Not necessarily tough to make. For the latter one, you will want to use layer 3, but then you need to sacrifice layer 3 in case you wanted some backgrounds for this layer...

And then there's also the message box which you need to work around. A sprite may also be doable for this pause screen - SMB2 does it too. I'm not sure how convenient this would be, though...
--------> Don't follow "Find Roy's Dignity", my hack. Because it's pretty outdated. <--------
HyperHacker
I figured the pause screen would just work like Yoshi's Island, not showing the level behind it. Then you're free to put whatever you want on it.

Message boxes are easy: don't put them in Mode7 levels. :P
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
Originally posted by HyperHacker
I figured the pause screen would just work like Yoshi's Island, not showing the level behind it. Then you're free to put whatever you want on it.

Message boxes are easy: don't put them in Mode7 levels. :P


Hm, ah right, we were talking about Mode 7 levels only. My bad XD

Either way, what method would one use to mask the level? Writing new data to the VRAM data of the layer? (To preserve it you would have to sacrifice a huge block of RAM though) Moving the layer in the X or Y axis? Putting a whole sprite in front of it? Warp to a new game mode (probably not wise to do)? Or affecting the interrupt routine in such a way that you can put all the stuff on layer 3, anyway?

I came accross this earlier when I was making my completely custom Pause Screen and I could find no convenient method.
Then again, I'm not particularly good in problem solving.

(Also, I think I'm slightly spamming this thread)
--------> Don't follow "Find Roy's Dignity", my hack. Because it's pretty outdated. <--------
HyperHacker
I don't see why you couldn't just use layers 1 and/or 2, and let the game rebuild the tilemaps when you unpause. You might have to call a subroutine or set a flag to make it do that, but it should be able to do it.
My projects - ROM hacks, Gameshark codes, homebrew, useful apps, online 65816 disassembler
SCAM: HomebreWare and Wiiunlocker
Generation over 9000: The first time you see this, put a meme in your signature.
Originally posted by HyperHacker
I don't see why you couldn't just use layers 1 and/or 2, and let the game rebuild the tilemaps when you unpause. You might have to call a subroutine or set a flag to make it do that, but it should be able to do it.


Oh, true. I wonder how much lag this would cause - probably not too much if used coherently.

*stops spamming this thread any further XD*
--------> Don't follow "Find Roy's Dignity", my hack. Because it's pretty outdated. <--------
New patch. Someone asked for the Star and 1up disassembles in the request thread, but since they're connected to 1 sprite, this is another option to have aside from making a new sprite.

Vid

Patch
I've removed my NoFades patch until I can find the brightness code for Star Road warps.
It seems that when you return to Mario, the lives name thing still says LUIGI.
I know. I just did that for an example. It's not meant to do exactly what is in the code, but whatever you want it to do (or whatever your ASM skills allow).
I've removed my NoFades patch until I can find the brightness code for Star Road warps.
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 154
  • 155
  • 156