Language…
16 users online: Batata Douce, buzz_lightzyear, Chambo, Dark Prince, ForthRightMC, Fozymandias, Gamet2004, Gorry, Green, MellowYouth, Rauf, Raychu2021, RicardoDeMelo,  Ringo, SiameseTwins, sinseiga - Guests: 264 - Bots: 241
Users: 64,795 (2,376 active)
Latest user: mathew

Official Hex/ASM/Etc. Help Thread

  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 418
  • 419
  • 420


You're most likely using an invalid form:

Code
LDA $0100,y	; exists, okay to use
LDA $00,y	; does not exist
LDA $7F0000,y	; does not exist

I recommend checking this page for a list of valid opcodes. For the most part, Y indexing only exists in the address form.
(the only exception to this, other than indirect indexing, is LDX dp,y for some reason)

Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer
Probably the LDA $7F0000,y one since I think the code he posted above (and now deleted) would have the error.

To work around that you could set the data bank to 7F and use "LDA.w !FreeRAM,y" just make sure to restore it afterwards.

Code
LDA #$7F : PHB : PHA : PLB ; Push data bank and 7F on the stack then pull 7F as the data bank
; your code that does stuff.
PLB ; To restore it


If it is the $00,y one then you can also just add .w but don't need the whole data bank change since it isn't in 7F anyway.
being a total noob at asm sucks..

Yes, it was the $7f0000,y
ive thought that would work because it works fine with x.. and every tutorial ive read it says y works basically the same as x.


Originally posted by NaroGugul
being a total noob at asm sucks..

Yes, it was the $7f0000,y
ive thought that would work because it works fine with x.. and every tutorial ive read it says y works basically the same as x.


You can actually consider Y works the same as X, ovelooking the fact some addressing modes indexing with y don't exist as the ones with x (could be the fact 65c816 ASM is limited to 1-byte opcodes and 0-3 byte operands, dunno). The essential fact about them is both of them are usually used for the same purpose of data indexing; though, if you want to perform some load/store operations without affecting the accumulator (the only one that support all the math and bitwise operations 65c816 provides through opcodes) or save one to four bytes of data without the use of the stack, X and Y are good choices.





Dream team (feed them, please):






Hello! I did this hex edit:
Code
org $002167   ;Disable the pixels in fade-in & fade-out
db $00

But unfortunately asar reports an error, what did I do wrong in that?
You are supposed to use a SNES address instead of a PC address. In your case, replace 2167 with 9F67.
Im trying to create a simple timer for my hack.

Ive inserted this code inside global/main with uber asm tool.
(Code stolen from uberasm Timer by Imamelia.. i just want to set it in the ram)
Code
!Minutes = $0DC3	; the RAM address used for the minutes
!Seconds = $0DC4	; the RAM address used for the seconds
!Frames = $0DC5		; the RAM address used for the frames


SetTime:

LDY #$3B		; 59 is the number we will use to reset "things"

Increasing:
INY		; Y = 3C (60) so we can use it to compare
INC !Frames	; increment frames
CPY !Frames	; if frames are 60...
BEQ ResetFrames2	; then reset them to 00
RTS

ResetFrames2:	;

STZ !Frames	; reset frames to 00
INC !Seconds	; increment seconds
CPY !Seconds	; if seconds are 60...
BEQ ResetSeconds2	; then reset them to 00
RTS

ResetSeconds2:		;
STZ !Seconds		; reset seconds to 00
INC !Minutes		; increment minutes
CPY !Minutes		; if minutes are 60...
BNE NoResetMinutes2	; then reset them to 00
STZ !Minutes		;
NoResetMinutes2:
RTS


The code works great. But every time i die the frame counter stop for a moment, giving me a very inaccurate timer.
So, theres any way to avoid this?
What's the routine to allow a sprite to be killed by sliding into it?

I'm using the Classic Goomba sprite, which for some reason hurts Mario if he's sliding. Since the .cfg file isn't affecting whether or not it can be slid into, I figure I must need to edit the sprite.
Generally inside the sprite's interaction routine. Any thing related to interaction is handled inside the sprite including sliding into the sprite.
(It also gives the tweaker bits a meaning because only then, the "Can't be killed by sliding" bit prevents a sprite from getting, well, killed by sliding.)

This means, you need to post the code (in pastebin or a similar site) in order to know where to put the sliding interaction.
Sorry for not having that available sooner. This is the code for the Goomba.
Okay, there are a few things to do:
  1. First, go to the line with "BEQ HasNoStar" and add on the next line the label "HasStar:".
  2. Right after "SprWins:", you add "LDA $13ED : BNE HasStar"

Though it may be that the distance is a bit too far between HasStar and the slope check.
In that case (aka there is a distance error), I recommend you to add "GoToStar: BRA HasStar" before "NoStar:", let's say "NoStar:"
That works perfectly, thank you!

It took some trial and error, though, because I suck at reading instructions properly the first time.
Hi

I never used UberASM, not by lacking of looking into it, but I just don't really get it.
But I'm trying to insert the wind blocks and it unfortunately requires UberASM.
So I went into it simply:
- I copied the block files into GPS and made the list
- I copied "UberasmCode.asm" into the 'level' folder of UberASM
- I added "14F UberasmCode.asm" into the "list" file of UberASM (I will use it for level 14F)

Then I launched UberASM, and I got this:


I have no idea what to make of that #tb{:DD}
Super Mario Pants World
Luigi's Lost Levels
New Super Mario Pants World
Luigi's Lost Levels 2 - Back With A Revenge
Luigi's Lost Levels 3 - Electrik Boogaloo
VLDC12 - 72HoKaizo#1


Those blocks were designed for the older patch version of UberASM. UberASM tool requires a few changes in the ASM file; just open it up in a text editor (notepad++ is recommended, but regular notepad works too) and make the following changes:

1. Change "WindStatus:" to "Main:"
2. Find any "RTS" lines and change them to "RTL" (this particular code has just one, after the ".Return" line).

Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer
Originally posted by Thomas
Those blocks were designed for the older patch version of UberASM. UberASM tool requires a few changes in the ASM file; just open it up in a text editor (notepad++ is recommended, but regular notepad works too) and make the following changes:

1. Change "WindStatus:" to "Main:"
2. Find any "RTS" lines and change them to "RTL" (this particular code has just one, after the ".Return" line).

Works well! Thanks!
Out of curiosity, is there a particular reason these blocks require UberASM?
Super Mario Pants World
Luigi's Lost Levels
New Super Mario Pants World
Luigi's Lost Levels 2 - Back With A Revenge
Luigi's Lost Levels 3 - Electrik Boogaloo
VLDC12 - 72HoKaizo#1
Originally posted by Romano338
Out of curiosity, is there a particular reason these blocks require UberASM?

The uberASM code does the actual "pushing", with the blocks only setting the direction. If the blocks did the pushing themselves, the effect would multiply when you're touching more than one block at a time. Blocks can't communicate with each other direcly, and their code only runs when the player is touching them, so they need some global code (i.e. uberASM) to coordinate things.


 
Hi

I tried to use the gradient tool, and I got a HDMA code that I copied in a asm file.
When I try to insert it with uberASM, I get an error saying it's missing a load/init/main/nmi label, and indeed there is no such thing in the code.
But I don't know which one applies, and how to put it.

Here is the code:

Code
Gradient1_RedGreenTable:
db $22,$3E,$5B
db $10,$3E,$5A
db $1E,$3D,$5A
db $2E,$3D,$59
db $01,$3D,$58
db $2D,$3C,$58
db $1F,$3C,$57
db $0E,$3B,$57
db $07,$3B,$56
db $00

Gradient1_BlueTable:
db $0B,$9E
db $11,$9D
db $10,$9C
db $10,$9B
db $11,$9A
db $10,$99
db $10,$98
db $11,$97
db $10,$96
db $11,$95
db $10,$94
db $10,$93
db $11,$92
db $10,$91
db $00


Any help please?
Super Mario Pants World
Luigi's Lost Levels
New Super Mario Pants World
Luigi's Lost Levels 2 - Back With A Revenge
Luigi's Lost Levels 3 - Electrik Boogaloo
VLDC12 - 72HoKaizo#1


Those are just the tables, not any actual code. Open the configuration settings (the button that looks like a wrench) and check the box for "Generate Initialization Code", then regenerate the code.

Also, if you're using UberASM Tool, change "InitGradient1:" to "Init:" and the RTS at the end of the code part to RTL.

Professional frame-by-frame time wizard. YouTube - Twitter - SMW Glitch List - SMW Randomizer
Where is $04A0 actually transferred to the DMA registers? The only two places in the ROM that even reference any of the ones for channel 7 are $009250 and $0092B2, neither of which are called when processing, for instance, the spotlight sprite. And does it only transfer half the table per frame?

----------------

I'm working on a hack! Check it out here. Progress: 64/95 levels.
  • Pages:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 398
  • 399
  • 400
  • 401
  • 402
  • 403
  • 404
  • 405
  • 406
  • 407
  • 408
  • 418
  • 419
  • 420