Banner
CLDC 2020's submission period is over and judging will begin soon! Thanks for participating!
Views: 826,826,278
Time:
16 users online: chickaDEE Magazine, Daizo Dee Von, dansalvato, Dark Prince, Dippy, Dispace, ExONightZ, Fermín Acosta Jr., GeneSu730, HammerGuy, JbrownFroggie, Moichumoi, Sarsath, TheMorganah, vertmart, Von Fahrenheit - Guests: 79 - Bots: 69 Users: 44,178 (2,518 active)
Latest: zoke
Tip: When using custom palettes, remember that certain colors in palettes 0 and 1 will also affect the status bar.Not logged in.
Posts by DuskSpark
DuskSpark's Profile - Posts by DuskSpark
Pages: « 1 2 »
First off: Hello! New member here. Nice to meet you all :).

Secondly: I suppose I could go through another workshop lesson. "Another" because I am the mm02 in the IRC.
(restricted)
There is a problem with InvisibleCoinBlock's and Pikaguy900's XY overworld block, which is designed to warp Mario to a different location in the whole map. I'm not sure if it is addressed yet, but 64 pages is too much to look through X(. The ASM code looks kinda like this:

LDA #$58 ; Load OW X pos
STA $1F17 ; Write new X Pos

LDA #$00 ; Load OW X pos High Byte
STA $1F18 ; Write new X Pos High Byte

LDA #$88 ; Load OW Y pos
STA $1F19 ; Write new Y Pos

LDA #$00 ; Load OW Y pos High Byte
STA $1F1A ; Write new Y Pos High Byte

LDA #$00 ;Load map
STA $1F11 ;Write new map
RTL

This is set to warp Mario to Top Secret Area in the overworld. The code works great, but it's missing something critical. I first encountered the problem when I put the block into Yoshi's Island 1. After I warped to the location of Top Secret Area, I tried entering the level, but couldn't. I tried multiple times, but it's the same result. The only way I could enter the level is by walking away and back. The first thing I looked at in the RAM map is $7E:13C1 (Current overworld tile), and so I set a breakpoint in the Snes9x debugger, then tried again. I got 97 in the accumulator. It was 66 when I walked away and back. In LM's overworld editor, tile 66 is a red level tile, and tile 97 is a piece of a cloud. Then I put the block in 2 other levels. One test resulted as tile 00, and the other as a tile somewhere in the 60s (probably was 63), but I was able to enter the level w/o moving at those points.
I was messing with the debugger's Step Into/Out/Over buttons to look at few of the addresses before $04:8E9B, which is the one that triggers the breakpoint ($7E:13C1) when you exit the level, and found address $04:8E94. To cut the long story short, I set the breakpoint to this address, and for each level I put the block in came different results:

$04/8E94 BF 00 C8 7E LDA $7EC800,x[$7E:C883] A:8BFF X:0083 Y:0026 P:eNvmxdizc (Yoshi's Island 1)

$04/8E94 BF 00 C8 7E LDA $7EC800,x[$7E:C869] A:8BFF X:0069 Y:0026 P:eNvmxdizc (Yoshi's Island 3)

$04/8E94 BF 00 C8 7E LDA $7EC800,x[$7E:CA15] A:8BFF X:0215 Y:0026 P:eNvmxdizc (Donut Plains 1)

This is what it looks like when I enter and exit Top Secret Area:

$04/8E94 BF 00 C8 7E LDA $7EC800,x[$7E:C885] A:8BFF X:0085 Y:0026 P:eNvmxdizc

If you looked carefully, the RAM address inside each bracket and the value of each X register are different. It finally occured to me that those addresses refer to a point of location in the entire map (hint: $7E:C883 (tile 97) is two tiles to the left of $7E:C885 (tile 66), where Top Secret Area is), and the value of the X register causes it to change. For some reason, jumping from one map to another changes the high byte of X to zero. These are the addresses that changed X last:

$04/8E8B A6 04 LDX $04 [$00:0004] A:8BFF X:031E Y:0026
$04/8E8D 30 0F BMI $0F [$8E9E] A:8BFF X:0083 Y:0026

This is the farthest I got. Any ideas?
Oh, I left the overworld as it is to begin with. Whether it is a new game or another cleam ROM, the results remain the same.

Edit: Man, I wish that blasted snes9x debugger came with a readme so I can figure out how to use the "trace from" button. The thing needs a readme period.
I solved the problem at last! I did so when I found out myself how to get the tracer to work.

Observe this part of the traced code:

Quote
$04/854D 9D 17 1F STA $1F17,x[$04:1F17] ;Mario's X position
$04/8550 4A LSR A
$04/8551 4A LSR A
$04/8552 4A LSR A
$04/8553 4A LSR A
$04/8554 9D 1F 1F STA $1F1F,x[$04:1F1F]
$04/8557 B9 D3 84 LDA $84D3,y[$04:84E5]
$04/855A 9D 19 1F STA $1F19,x[$04:1F19] ;Mario's Y position
$04/855D 4A LSR A
$04/855E 4A LSR A
$04/855F 4A LSR A
$04/8560 4A LSR A
$04/8561 9D 21 1F STA $1F21,x[$04:1F21]


I had wondered why there is a big gap between the X position code and the Y position code. The answer to the problem are addresses $04:8550-54 and $04:855D-61. So add these bolded codes to your XY overworld block:

Quote
JMP MarioBelow : JMP MarioAbove : JMP MarioSide : JMP SpriteV : JMP SpriteH : JMP MarioCape : JMP MarioFireBall

MarioAbove:
MarioBelow:
MarioSide:

LDA #$58 ; Load OW X pos
STA $1F17 ; Write new X Pos

LDA #$00 ;Load OW X pos High Byte
STA $1F18 ;Write new X Pos High Byte

LDA #$05 ;put high-byte and low-byte together (don't add them) then divide by 16 (10 in hex) to get this number
STA $1F1F


LDA #$88 ; Load OW Y pos
STA $1F19 ; Write new X Pos

LDA #$00 ;Load OW Y pos High Byte
STA $1F1A ;Write new X Pos High Byte

LDA #$08 ;do the same as $1F1F
STA $1F21


LDA #$00 ;Load map
STA $1F11 ;Write new map

SpriteV:
SpriteH:
MarioCape:
MarioFireBall:
RTL


I must say that I'm very excited about this achievement.
I would like to request a simple ASM that changes Mario's walking/swimming status in the overworld. It's to make the final fix for the XY overworld block, so that when I warp him from a water level to a land level or the other way around, he would not still be swimming or walking.
When you set the breakpoints for $7E:1F17 and $7E:1F19, are you sure you checked the boxes under the "write" column?

What I do is that I walk toward the target level, activate both of the breakpoints right before I reach it, then keep clicking the Run button until the rom runs normally. After that I look at the last two lines of code and jot in the corresponding values in their respective places in the block.

These are the default coordinates for the Top Secret Area level:

Code
$04/9828 9D 17 1F    STA $1F17,x[$04:1F19]   A:0088 X:0002 Y:0002

$04/9828 9D 17 1F    STA $1F17,x[$04:1F17]   A:0058 X:0000 Y:0000


In addition, add these bolded codes to the block as well (values are set for Top Secret Area):

Quote

LDA #$58 ; Load OW X pos
STA $1F17 ; Write new X Pos

LDA #$00 ;Load OW X pos High Byte
STA $1F18 ;Write new X Pos High Byte

LDA #$05 ;put Xpos high and low byte together (00 & 58 -> 0058) then divide by 10 hex to get this value
STA $1F1F ;pointer to Mario's Xpos (Map16 low-byte table)


LDA #$88 ; Load OW Y pos
STA $1F19 ; Write new Y Pos

LDA #$00 ;Load OW Y pos High Byte
STA $1F1A ;Write new Y Pos High Byte

LDA #$08 ; same as Xpos but for Ypos
STA $1F21 ; pointer to Mario's Ypos (Map16 low-byte table)


LDA #$00 ;Load map
STA $1F11 ;Write new map


They will prevent a certain major problem.
Ah, so it's earlier than the last time I checked. With that, I shouldn't forget about this event as easily. Just confirming that I remain interested.

Heh, what I really oughtta do after this is to try to come up with my very first SMW hack.
You sure have covered a little more in the evening lesson than the last one. That's good stuff SNN!
I suppose I'll share a couple.

Worst dream:
I was very little at the time, six or seven years old maybe, and lived somewhere in Montasano (I can't believe I remembered that name). I had a particular Winnie The Pooh teddy bear that I always held whenever I slept, but this dream tore me apart from it. I was trying to wake my sister up. The teddy was laying there between me and her on the pillow (don't get any wrong ideas), so I relocated it, when suddenly it zoomed right onto my chest frontal side. I tried pushing it away, but it kept reattaching to my chest, like a strong magnet. Then later, it went phychotic and started beating on my chest very rapidly in the same fashion, while at the same time making a sort of tingly jingle. Right when my parents rushed to me, the teddy zipped back to the spot it was at before, which marked the end of the nightmare. Yes, my parents actually did hurry to me when they heard me screaming (so I was told I was). No other nightmare had me screaming and quivering like this one did. The day after, I threw that teddy bear into my sister's closet.
What the most strangest about this was that I wasn't aware that I was even asleep when this happened. When I think about it now, I'm still confused.

Strangest dream:
Here, once again I was very little, but this time I lived at Elma, WA. I used to have a reoccuring mini-dream that featured a small monochromic train with a face sort of like a shy guy's. I called it the "grey train". All it had done was to make an entrance from any of the various places in my room (usually around my section of the bunk bed), cry out a ghoulish dual-toned monotonic cry that lasted a little while, then return back from whence it had come, much like the cuckoo bird of a clock, but slower paced.
The dream that was weird took me to some kind of coaster ride that functioned like a tour ride, in a place made almost entirely of those trains (if they were all bodies and skeletons, it truly would've been the most scariest). They were even piled all over the field. It was all the dream was. At the end, the bedroom ceiling opened up and I dropped back into my bed and the dream ended. It was the last time I had ever seen the grey train.
Hello! I am DuskSpark, and I'm also m_m02 in the IRC. It's been about a month since I registered here, and I have yet to make an introductory post here. And so I do now. Pleased to make your aquaintances.
If there isn't any users with autism registered here in this site up to now, well here's one right here :).
Thank you Dimentio & Mr. Weegee :D.

Oh yeah! I forgot to mention that I like to play Brawl, and I usually do not turn down any match requests when I'm not busy... if I can catch them in time that is.
Why couldn't I find a tutorial like this one when I searched for it through the Google search bar earlier!? This tutorial could have made my learning experience a lot more easy (save for the Manual/Custom/One Shot trigger parts).

I've read the help file over and over again, but it only became more clear to me after learning from other sources.

As for the Manual/Custom/One Shot parts, downloading Decimating DJ's "Custom Trigger Blocks" basically gave me a crystal clear idea of their usage. I've tried the Manual and Custom triggers with a custom event (1up >= 1) using a custom block, but unfortunately neither did anything, compared to the other predefined events, until I touched the block. FuSoYa should have let us integrate such events through Lunar Magic (hint, hint)! Until then, I guess I have to create these events through ASM patches.
Old thread, new post :D!

I've bumped this thread because I could use some information about a problem I have with my first patch I've made. Here's the code:

header
lorom

!FreeSpace = $03FE20

org $028AD2
JSL Code
NOP #2

org !FreeSpace

!CodeSize = CodeEnd-CodeStart
db "STAR"
dw !CodeSize-$01
dw !CodeSize-$01^$FFFF

CodeStart:
Code:
INC $0DBE ; Replaced code
LDA $0DBE
CMP #$01
BMI Skip
LDA #$01 ;\ Change frame of Manual event #0 to Frame 1
STA $7FC070 ;/
LDA $0DBE
CMP #$02
BMI Skip
LDA #$01 ;\ Change frame of Manual event #1 to Frame 1
STA $7FC071 ;/
LDA $0DBE
CMP #$03
BMI Skip
LDA #$01 ;\ Change frame of Manual event #2 to Frame 1
STA $7FC072 ;/
Skip:
LDA $1490 ; Replaced code
RTL
CodeEnd:


This patch triggers Manual ExAnimation Events 0 - 2 based on the number of 1ups collected w/o the need to touch any custom blocks. Once I applied it, it worked just the way I like it, but for some odd reason, Mario wouldn't stop sparkling, even if I didn't grab any 1ups. The only way I've stopped the side effect was to change org $028AD2 to org $8E6F (and properly restore its respective lines of code).

Can anyone please tell me what happened here?
Hmm... well I did follow the procedures shown in this tutorial...
It looks like this in all.log:

CODE_028AD2: EE BE 0D INC.W RAM_StatusLives
CODE_028AD5: AD 90 14 LDA.W $1490


Since JSL Code is supposed to take 4 bytes, it should be like this, right?:

CODE_028AD2: XX XX XX INC.W RAM_StatusLives
CODE_028AD5: XX 90 14 LDA.W $1490


And that's why I have the #2 after NOP to rid of the last two bytes. Yet something still appears to be amiss.

I'm confused... there really shouldn't be any flaws... Is there a mistake in this tut, or must I always replace some line of code that runs in every frame when it comes to hacking routines?
Actually Ramp202, I already edited my hack I've been working on for a while to have the player start with #$00 lives, and had those lives set to zero whenever the player dies. I have a personal exit block that also sets the lives to zero, so that wouldn't be a problem.
Yes, that's DEFINITELY what it is! Thanks a lot for your help Sind ^_^!

I guess from now on, I should check for any branch codes when considering which org locations to use. This warning should've been mentioned in this tut.
One thing I've learned the hard way was not to use the last eight colors of the palette, or otherwise those colors would show up black. If only there's a way around that...
This one's my first musical experiment ever #w{=3}!

This tune is from a Gameboy game called Kwirk. I cannot tell whether or not I've ported it since I crafted the txt file from scratch. It was difficult, but I realized that that was because I didn't check for the tempo first thing.

Here it is (the notes sound higher in WinSPC than ingame):
Kwirk - Going up?

If I wasn't so late, I'd have probably used this for Round 6 of SMWC Idol. Ya think it's release worthy?
Thank you for the good feedback Hadron! :)

It took me quite a bit of hours to complete it from ground up (shorter if only I tracked the right tempo first :( ), but the learning experience is worth it.

I found finding the right percussions to be a bit tough. I couldn't figure a way to emulate the spray-like sound the game makes, but from what I have going now, I think it sounds good enough.
Pages: « 1 2 »
DuskSpark's Profile - Posts by DuskSpark

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


Total queries: 8

Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

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