Banner
Views: 853,021,193
Time:
23 users online:  Anorakun, ASMagician Maks, BrownBuddy,  BTD6_maker, Cartesius, cherrybombr, Green Jerry, Hooded Edge, JDC, Jv341211, KaidenThelens,  KevinM, le4che, lustreflux, lx5,  Maxodex,  Pinci, SAMYR DUTRA ARAUJO, Snessy The Duck, SnowyIceDragon, timeisart, UTF,  xHF01x - Guests: 89 - Bots: 65 Users: 47,044 (2,524 active)
Latest: Jv341211
Tip: Keep your graphics within a specific style. Don't mix cartoony sprites with detailed and realistic back/foregrounds!Not logged in.
Posts by singlepat
singlepat's Profile - Posts by singlepat
Pages: « 1 2 3 4 5 6 7 8133 134 »
I might be living under a rock and VLDC9 submissions might not be open anymore (r.i.p. me if that's true) but I've searched throughout the announcements and contest forums and the only thing I could find that was officially talking about VLDC9 was Vitor Vitela's thread for suggestions. The most recent thing that's officially talked about VLDC9 is JackTheSpades' post about music and remixes but I'm awful at making music so that's not happening lol. Am I late to the party or are submissions still open?

Just give me the brutal honest truth I can take it #smw{-_-}


Can't believe I missed that l0l, thanks guys.

Time to wait till 2017 lol.
I wish I knew about VLDC before submissions ended, at least I'll be able to make my VLDC debut on the 10th anniversary so that's at least good I guess.
Hello, most of you may not know me, but I had a bit of trouble with ASM at first. A lot of ASM tutorials seemed too complex, too wordy, too unorganized. Without a doubt, Schwa's ASM tutorial and Ersanio's ASM tutorial helped me a lot, but it was still a bit hard to get used to. I don't want anyone else to be confused, so let's get ready to rock and roll!

Just to let you guys know, I haven't mastered sprites enough to be too trustworthy about that, but I assure you when I do I will add that to the tutorial. #w{=3} On the other hand, I'm confident I'm very good at blocks and other ASM in general.

1: Values.

Let's start off with learning about values like 0, a hexadecimal value, or just hex for short. This translates to 0 as a real number we use in the real world outside of programming. Likewise, hex 1 translates to 1, and hex 2 translates to 2. Hex 9 translates to 9. A, B, C, D, E, and F are also hex values. Hex A translates to 10, hex B translates to 11, all the way up to hex F, which is 15. After you get past hex F, it's just hex 10, and the cycle repeats. For example, hex 1F is 32, and hex FF is 256. One more thing you should note, hex 0 is still treated as any other value. This is why every value from hex 0 to hex F is actually 16 different values you can use!

There are hex 1FF sublevels, or 512, in Super Mario World! There's no doubt that you can fit a long and fun hack into that amount!

2: Basic commands.

We're not going to work on blocks just yet. For now, you'll learn the basic commands that you'll need to know first!

LDA is a vital command in ASM. It loads either an independent value, as I like to call them, that you specify, or loads whatever is already stored to a RAM address. You can find what is stored in RAM addresses by clicking this link.

First we'll work with exact values. Let's look at this piece of code.

Code
LDA #$01


This is loading #$01, a hex value. This is the independent value you're loading because it doesn't rely on other RAM addresses. You can load anything from #$00 to #$FF.

Try looking at this code now.

Code
LDA $19


This is loading the hex value that is currently loaded to the RAM address $7E0019. You don't have to type the whole thing if it's only two ending hex values like 19. If it was $7E1697, which you can see is the amount of enemies stomped if you click here and look at the top of the webpage, you'd only need to type $1697. So, if you stomped on 4 different Koopas, this value would be #$04. If you haven't stomped on anything, it would just be #$00. Note that other addresses don't necessarily have #$00 mean nothing. $14AF, the value used by the ON/OFF blocks, uses #$00 to indicate that the switch is set to ON, and #$01 to indicate that it is set to OFF.

Let's look at the same code again.

Code
LDA $19


You now know it's loading the value of Mario's power-up status. If Mario is small, it's #$00. If he's big, it's #$01. If he has a cape, it's #$02. If he has a fire power-up, it's #$03. Now, let's look at the RAM address used for message box triggers. You're probably wondering what Mario's power-up has to do with message boxes. Well, let's look at this next code!

Code
LDA $19
STA $1426


STA is the command that stores the value you last loaded using LDA to the RAM address you specify. In this case, it's storing the value of Mario's power-up to $1426. If Mario has no power-up, nothing will happen. If he does, he will be faced with a message box when the code is run. If he's big, the level's first message will appear; if he has a cape, the second one will appear. If he has the fire flower, Yoshi's thank you message will appear.

Let's look at the code once more!

Code
LDA $19
STA $1426
RTL


You're probably wondering what "RTL" means. Remove all the complicated talk and you know RTL ends the code, and returns to the beginning of the code to attempt to run again if need be.

There's also two commands that help a bit every once in a while. INC increases a RAM address by 1, and DEC decreases a RAM address by 1. If the address' stored value is #$FF, INC will change it to #$00. If it's #$00, DEC will make it #$FF.

Code
INC $19
RTL


This would make Mario turn into big Mario if he's small, or caped if he's big, and so on. Not recommended to use unused power-ups.

Code
DEC $19
RTL


This does the exact reverse, and once again you should not use unused power-ups.

Sometimes you'll need to work with more than just 1, so you're going to need to use a few more commands.

Code
LDA $0DBE
CLC
ADC #$05


The RAM address being used right now is the amount of lives the player has. This code adds #$05 to the $0DBE, so if the player has #$A8 lives, this code will make the player have #$AD lives.

Code
LDA $0DBE
SEC
SBC #$05


This command does the opposite; this means it will subtract #$05 from a given RAM address' value. #$A8 would become #$A3.

You can also multiply or divide a value by 2.

Code
LDA #$02
ASL A
RTL


This multiplies #$02 by 2, which is pointless because we can just do LDA #$04. However, you can also use a RAM address instead, such as $0DBE.

Code
ASL $0DBE
RTL


This will multiply the player's lives by 2. If the player has #$09 lives, they will have #$12 lives.

Code
LSR $0DBE
RTL


This will divide the player's lives by 2. Simple, right?

There's one more command before we move on. That is STZ. STZ sets the specified RAM address to #$00. Like this:

Code
STZ $19
RTL


This code would instantly make Mario lose his power-up.

3. Branching.

A lot of times just LDA and STA won't cut it; you're going to need conditional commands that only work when certain conditions have been met. Here you'll learn about branching.

Let's look at some of our previous code.

Code
LDA $19
STA $1426
RTL


This stores the value of Mario's power-up to the message box trigger. But what if we wanted to exclude Yoshi's thank you message? We'd use a branching command.

Let's look at this new code.

Code
LDA $19
CMP #$03


CMP is short for "compare." The value of Mario's current power-up is being compared to #$03. This means if the value $19 is being compared to matches the value #$03, the system will know that Mario's current power-up is the cape. But where does branching come in?

Code
LDA $19
CMP #$03
BEQ Label
RTL


BEQ is a branching command. "Label" can be changed to anything, but we'll go over that in a bit. BEQ checks if the value being loaded matches the value it's compared to. If it does match, it jumps to the label's code. If not, it proceeds to the code below the BEQ command. Now, let's see about that confusing label.

Code
LDA $19
CMP #$03
BEQ Label
RTL

Label:
LDA #$03
STA $1426
RTL


As you know, if $19 matches #$03, it will jump to the code under "Label." Once again, "Label" can be changed to anything, you just need to make sure BEQ will redirect to the correct label. But what if we wanted to display Yoshi's message only, and only when Mario has a power-up?

Code
LDA $19
BNE Label
RTL

Label:
LDA #$03
STA $1426
RTL


First off, you may notice I didn't add CMP #$00 after LDA $19. This is because BEQ and BNE treat the compared value as #$00 if you don't specify what the compared value is.

BNE is another branching command that works the opposite of BEQ. If the loaded value doesn't match the value it's being compared to, only then it will jump to the label. This means if $19 was any value from #$01 to #$FF (which normally shouldn't happen) it would jump to Label and display Yoshi's thank you message, but if it was #$00 it wouldn't.

You could also use this:

Code
LDA $19
BCS Label
RTL

Label:
LDA #$03
STA $1426
RTL


BCS is a branching code that branches to the specified label if the loaded value is greater than the value it's compared to. BCC is another branching code that branches if the value is less than the compared value. So you could also use this code:

Code
LDA $19
CMP #$01
BCC Label
RTL

Label:
LDA #$03
STA $1426
RTL


However, this is less efficient because it's a waste of a line, which wastes free space in your ROM. Remember, you only have so much room to work with, so make the best of it!

Code
BRA Label


This code is by itself because BRA is a special branching command. It always jumps to the specified label if it's run! This means you can have a code like this:

Code
LDA $19
BEQ Message1
LDA #$03
STA $1426
BRA Message2

Message1:
LDA #$01
STA $1426
BRA End

Message2:
LDA #$02
STA $1426
BRA End

End:
LDA #$03
STA $19
RTL


And you won't have to write the code in the "End" label two times. In this case it doesn't matter too much because it's such a small amount of code, but on a bigger project BRA will definitely help.

4. Blocks.

Now we can actually start doing something with our new knowledge of ASM!

For a block, you'll need to start off with adding this at the top of your ASM file:

Code
db $42


You'll want to put this under that as well:

Code
JMP MarioBelow : JMP MarioAbove : JMP MarioSide
JMP SpriteV : JMP SpriteH
JMP Cape : JMP Fireball
JMP MarioCorner : JMP MarioBody : JMP MarioHead


You've probably seen people use different JMPs if you've used blocks in the SMW Blocks section. I myself didn't know this, but LX5 helped a lot with their post:

Originally posted by LX5
You can rename the JMP's labels and their code will be run regardless of their name when Mario/Sprites touches the block. It's matter of preference and doesn't impact the insert size or speed.


All of that basically gives the block code for interaction; without all that the game would crash. Every one of these interactions is coded like labels. Since you know pretty much everything you need to know about those, you can do this pretty easily.

One thing to note is that blocks only run code when they're touched by Mario or a sprite, which means you can't make any moving blocks. Also, they run code every frame whenever their code is being run.

Let's try out coding one of the interactions.

Code
MarioAbove:
STZ $19
RTL


This will make Mario lose his power-up whenever he stands on it! Even if he gets a mushroom, cape, or fire flower while he's on it, it will just make him small again until he steps off of the block because the code's run every frame.

5. I'll add a sprite tutorial once I git gud at that.

6. End.

I really hope this helps a lot of people that are confused by wordy tutorials, or scarily long ones. I made this tutorial because I myself found this one of the hardest things about learning ASM, and I didn't want others to be discouraged like I was for quite some time. Once again, I hope this really helped, and if I messed up anywhere in this tutorial please let me know in the replies! Thanks for your time, peace out!
Originally posted by LX5
Try using Vitor's SA-1 converter, it should do the job just fine.

It works with sprites and blocks, but not patches.


Just did that right now, and it still just acts like block 130.
Fixed and updated, thanks a lot!
No I'm just really good at improvising lol.
Originally posted by MarkD
Originally posted by ThePat545
Originally posted by LX5
Try using Vitor's SA-1 converter, it should do the job just fine.

It works with sprites and blocks, but not patches.


Just did that right now, and it still just acts like block 130.



Maybe check your Map16 to see if the block is acting like 130.

It is set to act like 130, but I tried with 25 as well and it still did nothing.
Originally posted by DaSpongeBobMan
I have the same problem with GreenHammerBro's screen scrolling pipes. The vertical pipes work, but not the horizontal ones. He said he'll fix it when SA-1 GPS is officially released, but I'm not waiting that long.

Yeah, I know that there's some way to fix it but I just don't know what it is.


I was looking through the files for the 100th time until I found the txt file refer to address $9E, which is the non-SA-1 address. GG, many hours of wasted time.
Okay so SA-1 is making mode 7 really screwy. If I try battling Bowser it goes from an epic fast-paced battle to the God dang Matrix. If I fight Ludwig the ground isn't even visible and everything's slow-motion.

Is there a patch to fix this?
Originally posted by DaSpongeBobMan
I have the same problem for Iggy. Don't know if the same's for Larry, if I'm mistaken.

It slows down for every mode 7 boss from my experience.
Originally posted by JohnB
For the Bowser Battle: This has to do with the sprite header settings
For the Iggy/Larry Battles: Not sure, but it probably also is the sprite header settings.

To fix the Bowser fight, change the setting from 01 to 00.

It's not sprite header mode 7, I'm talking about the mode 7 that scales and rotates layer 1 like in this video. #w{=P}


...at least that's what I would want.

In reality I would just be spamming memes, swag, lenny faces, and jumpscares on 4chan, smwcentral, and something awful lol.
Originally posted by Wind Fish
The readme shows that John's information is indeed correct:
Originally posted by SA-1 Readme
About Bowser: You must go to level 1C7 and change sprite header
to 0x00. It's because Bowser's battle uses sprite header 0x10,
responsible for allowing 22 sprites on screen and obviously
doesn't work with how Bowser arena is coded.


Hmm, alright thanks. :P
1. YouTube fixes its copyright claim system, but Sam Pepper and Keemstar's channels both grow bigger than even PewDiePie's because nobody's able to take their channels down.

2. SMW Central and Caffie.net are very active, but there's so many new posts and people talking that they never notice you anyway.

3. Valve is more dedicated to public relations and support, but now nobody's making memes about Valve or Gaben, most of 4chan and 9gag feels empty, and thus does something so huge and horrible that it breaks the internet. Nice one thinking THAT one out.

I wish for the following:

1. Unlimited fast food. Thoroughly cooked, non-poisoned, fresh, and tasty fast food ONLY. High-quality service and food, nobody's jealous of my good fortune. I'm aware that I need to eat in moderation.

2. Sue Nintendo for abusing outdated copyright laws when someone does something they don't like. ROMs can be distributed, ROMhacks can be bought on Virtual Console on the Wii U and 3DS eShops. "It's legal if you bought a real copy" rumors are nonexistent. People still can't make money off of ROMhacks or ROMs without Nintendo's permission.

3. Minecraft's fanbase is no longer toxic and it's restored to its former greatness. Notch buys Mojang back for the same $2.5 billion he sold it for, Dinnerbone and Jeb aren't lazy, and the plugin API is finally finished.
Originally posted by Mayrio
How about, instead of staying in the room with the spikes on the walls, we leave to safety?

https://trinityartsphotoclub.files.wordpress.com/2012/05/dsc5174-leukemia-cup-regatta-may-2012_.jpg
modedit: tablestretch go away
...they found Michael Jackson revived from the dead and Hank Hill. It turns out the military base was actually Area 51, and the government was experimenting with bringing inanimate things to life!

Hank throws pocket sand at K3fka and MJ moonwalks on his face. Dan gets 3sp00kt and runs like a little turd. Kieran, still with K3fka, then notices the mercenaries they met earlier with guns, knives, rocket launchers, and memes that were brought to life by the experiments.

The memes, mercenaries, Hank Hill, Michael Jackson all start fighting with Kieran and K3fka. You can see Nyan Cat pooping rainbows everywhere, and Weegee hypnotizing Dan in the distance. Of course, with K3fka's amazing Ban Hammer given to him by the SMWC Staff Team, he knocks the living turd out of the mercenaries, banning them irl.

With all the mercenaries transported to Encyclopedia Dramatica, only Hank Hill, Michael Jackson, and the memes remain. K3fka, Kieran, and Dan all huddle together to form a plan.

Without thinking about how the others were going to brutally murder them in cold blood, they spent about 10 seconds thinking of a plan.

K3fka suggested they use moar Ban Hammer. Dan suggested they run away. Kieran suggested they should find Ms. Pauline. After a short time Hank Hill threw a container of propane and propane accessories at the gang, knocking them all out.

K3fka, Kieran, and Dan wake up in...
Hi. I'm trying to upload GFX to mode 7, and I found this tutorial, but not only is it almost 5 years old but the link to the tutorial on making your own GFX for mode 7 doesn't work. #smw{-_-}

I'm also confused on what kind of GFX file to make. Should I make it 3bpp because mode 7 automatically uncompresses them into 8bpp, or make it 8bpp and then insert it with Lunar Magic?

There's also the question of the 256-color palette. I know Layer 1 uses one single palette, with 256 colors, but I'm unsure how to make the .bin file in YY-CHR.

Thanks in advance. #w{=3}
It's the passion of Mario games that's brought us all here, and that's what motivates us all to make ROMhacks. Of course we take breaks here and there, and that's completely normal. Nobody can have a one-track mind for such a long time.

I think of what I've always wanted from Mario games. Not just Super Mario World either, I'm talking about the whole series. I've always wanted to have a challenge from levels, maybe a story or unique bosses that really stand out.

And that's how it's been. With lots of help, I've been able to make (in my opinion) decent levels and I know a bit of ASM to do some of the things I want. To this day I'm still learning about different things, and getting inspiration for my next level, gimmick, or boss, and that really makes every day on SMWC interesting and fresh for me, because there's always something new to learn about and explore.
Originally posted by K3fka
We (staff) are able to find reregs fairly easily

VPNs, proxies, etc.

Remember this is a HACKING community so people probably already found ways around rereg detection ( ͡° ͜ʖ ͡°)
Pages: « 1 2 3 4 5 6 7 8133 134 »
singlepat's Profile - Posts by singlepat

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2020 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy