Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,442,918
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-20-24 04:32 PM
Guest: Register | Login

Main - Posts by RetroRain

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

RetroRain
Posted on 02-15-08 09:22 AM, in Need help with a practice hack - SMB Rain Link | Quote | ID: 77880


Fuzz Ball
Level: 66

Posts: 41/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Thanks for the code frantik. I have been experimenting with it. It definately does something. I am so close to what I want, but I'm not sure of the right code. I'm having a tough time with it. I can get 4-tile animation, but it is very flickery, because it is using pages I don't want it to use.

LDA #$03
STA $8000
LDA #$09
STA $8001
LDA $09
AND #$03
STA $8001

I have even used the LSRs, and all sorts of different remixes of the code you gave me, and nothing is getting me the results I want.


PPU Viewer:

[][][][][][][][] [][][][][][][][]

[][][][][][][][] [][][][][][][][] <----- PPU $1400 (LDA #$03 and STA $8000, We don't need to worry about this)

[][][][][][][][] [][][][][][][][]

[][][][][][][][] [][][][][][][][]


It is the LDA #$09 and STA $8001 that is the problem here.

There are 4 pages that have to be animated.

#$09 = First ? Block Frame
#$0D = Second ? Block Frame
#$11 = Third ? Block Frame
#$15 = Fourth ? Block Frame

#$09 needs to be incremented by 4 to do each frame, because....

Right Side Pattern Table:

[][][][][][][][] #$08

[][][][][][][][] #$09

[][][][][][][][] #$0A

[][][][][][][][] #$0B



[][][][][][][][] #$0C

[][][][][][][][] #$0D

[][][][][][][][] #$0E

[][][][][][][][] #$0F



[][][][][][][][] #$10

[][][][][][][][] #$11

[][][][][][][][] #$12

[][][][][][][][] #$13



[][][][][][][][] #$14

[][][][][][][][] #$15

[][][][][][][][] #$16

[][][][][][][][] #$17



And that is because I am using Mapper 4 (MMC3), where the Right side pattern table is split into 4 VROM pages, as opposed to the Left side, which is split into 2 VROM pages, like so.......

[][][][][][][][] [][][][][][][][]

[][][][][][][][] [][][][][][][][]

[][][][][][][][] [][][][][][][][]

[][][][][][][][] [][][][][][][][]

Now I could use a different mapper, but that is running away from the problem at hand. I need to be able to do this.

The only thing I have to do is get proper code for my animation to work. Everything else is already taken care of.

I guess what I'm asking is, how do I get the frame counter (Address $09), to select my 4 values, without selecting other pages that I don't want in there? I tried CMPs also...

I'm going to keep playing around with it though, because I'm almost there. This is the last part.

____________________
My YouTube Channel

RetroRain
Posted on 02-15-08 08:55 PM, in Need help with a practice hack - SMB Rain (rev. 2 of 02-15-08 09:08 PM) Link | Quote | ID: 77912


Fuzz Ball
Level: 66

Posts: 42/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
I tried it, but it is not working. Here is the code I typed, shown from the debugger:

$89E1: A9 03 LDA #$03
$89E3: 8D 00 80 STA $8000 = #$78
$89E6: EE 0F 00 INC $000F = #$01
$89E9: AD 0F 00 LDA $000F = #$01
$89EC: 29 03 AND #$03
$89EE: 8D 0F 00 STA $000F = #$01
$89F1: AA TAX
$89F2: BD F8 89 LDA $89F8,X @ $89F9 = #$09
$89F5: 8D 01 80 STA $8001 = #$D8
$89F8: 05 09 ORA $09 = #$1A
$89FA: 0D 11 00 ORA $0011 = #$00

Since $0F isn't used, I decided to use that as my counter. Also, I confused the numbers before. It is #$05, #$09, #$0D, and #$11. It appears to stop loading at #$09. Is there any errors in this code?

EDIT - It is actually only loading one tile, because the INC $000F comes before it is stored, so it is storing #$09, and then that's it.

____________________
My YouTube Channel

RetroRain
Posted on 02-16-08 12:02 AM, in Need help with a practice hack - SMB Rain Link | Quote | ID: 77926


Fuzz Ball
Level: 66

Posts: 43/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Dude, you are the best! Really man, thanks a lot!



____________________
My YouTube Channel

RetroRain
Posted on 02-16-08 06:26 PM, in Need help with a practice hack - SMB Rain Link | Quote | ID: 77996


Fuzz Ball
Level: 66

Posts: 44/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
If I wanted to do 8-tile animation, or 16-tile animation, would I have to make just a few minor adjustments to the code?

____________________
My YouTube Channel

RetroRain
Posted on 02-18-08 03:37 AM, in A very good game that never got the attention it deserved... Link | Quote | ID: 78121


Fuzz Ball
Level: 66

Posts: 45/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
A Super NES game called Kablooey. Have you ever played it? If not, and you like puzzle games, you should definately try. I have many memories of playing this when I was kid, when the Super NES was a big thing. Not a lot of people talk about it, or even heard of it. It's so unheard of, that there isn't even a YouTube video of the game. Has anyone ever played it?

____________________
My YouTube Channel

RetroRain
Posted on 02-20-08 03:06 AM, in Need help with a practice hack - SMB Rain (rev. 2 of 02-20-08 03:22 AM) Link | Quote | ID: 78385


Fuzz Ball
Level: 66

Posts: 46/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
I added 16-frame tile animated rain to SMB3. There's just one thing. Is there anything I can do to make the rain come down faster?



DahrkDaiz's SMB3 Notes:

$8E35:AC 1A 07 LDY $071A ; This loads the current bank from lower left corner of the pattern table
$8E38:C0 6A CPY #$6A ; 6A is the bank for the Airship, which doesn't have animated bg tiles
$8E3A:F0 21 BEQ $8E5D ; thus skip the animating routine
$8E3C:A5 15 LDA $15 ; This loads the constant timer
$8E3E:29 03 AND #$03 ; used for battleship animated tiles
$8E40: D0 1B BNE $8E5D ; but skips it on xxxx xx00 since there's only 3 frames of animation
$8E42:C8 INY
$8E43:C8 INY
$8E44:C0 76 CPY #$76 ; 74 is the last bank for the battle ship animated tile sequence (70, 72, 74)
$8E46: D0 02 BNE $8E4A ; a table isn't used here, thus, Y (from 71A) is increased twice
$8E48:A0 70 LDY #$70 ; if it reaches 76, loop back to the first animation sequence (70)
$8E4A:8C 1A 07 STY $071A ; and store it into the gfx bank
$8E4D: D0 0E BNE $8E5D
$8E4F:A5 15 LDA $15 ; this loads the constant timer and indexes it for the global
$8E51:29 18 AND #$18 ; animated tiles (coins, ? blocks, munchers, etc)
$8E53:4A LSR
$8E54:4A LSR
$8E55:4A LSR
$8E56:AA TAX
$8E57: BD FC 83 LDA $83FC,X ; Loads a bank from the animation sequence (60, 62, 64, 66)
$8E5A:8D 1A 07 STA $071A ; and finally stores it into the ram for the lower left gfx bank

With what I highlighted in bold, I changed the location it gets the tiles from. I put 16 bytes (16 tiles) in some free space, and changed other parts of the code above.

____________________
My YouTube Channel

RetroRain
Posted on 02-20-08 04:05 AM, in Need help with a practice hack - SMB Rain (rev. 2 of 02-20-08 04:41 AM) Link | Quote | ID: 78393


Fuzz Ball
Level: 66

Posts: 47/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
I noticed that when I mess with the LSRs, by NOPing them out, it puts frames in there that don't belong, obviously, but the rain comes down a lot quicker when its their turn to show up.

EDIT - Nevermind. I figured it out. It CAN be done by tweaking the value at AND, and NOPing out 2 LSRs.



The ? blocks and coins are spinning super-fast, because I didn't make animations for them. Its the same original 4-frames being done over a few times.

____________________
My YouTube Channel

RetroRain
Posted on 02-20-08 04:46 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 78399


Fuzz Ball
Level: 66

Posts: 48/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Might as well post this here too, since I finally have something decent enough to show.

Through all of the help I have received, and with a lot of practice, I was able to add 16 frames of animation to SMB3. Right now, the rain is animated through 16 frames, but the ? blocks and coins are animated with 4 frames (hence why they move really fast), because I didn't draw frames for them yet.



____________________
My YouTube Channel

RetroRain
Posted on 02-21-08 12:27 AM, in Need help with a practice hack - SMB Rain Link | Quote | ID: 78452


Fuzz Ball
Level: 66

Posts: 49/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Yeah but that can easily be fixed. Since I plan on re-drawing the rain anyway (it looks like shit really), all I have to do is copy each of the original 4 frames, 4 times. Then, if I don't want 16 frames for certain things, I don't need to.

____________________
My YouTube Channel

RetroRain
Posted on 02-21-08 06:05 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 78471


Fuzz Ball
Level: 66

Posts: 50/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Those familiar with Star Trek, will understand this...



____________________
My YouTube Channel

RetroRain
Posted on 02-21-08 09:20 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 78478


Fuzz Ball
Level: 66

Posts: 51/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Thanks. I took the flash effect out. I decided not to use it. It started hurting my eyes after a while, so if it hurts people's eyes, that's not a good thing. I could probably put the flash at random intervals, but right now its not a priority for me. Maybe later on, we'll see... There have already been a lot of minor changes to the first level, since the video. Level 1 is finally done, and Level 2 has been started. I did some graphics changes as well. I'm having fun making this, so hopefully I can get it done. I want to get a lot more done, before I show more.

____________________
My YouTube Channel

RetroRain
Posted on 02-22-08 09:48 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 78588


Fuzz Ball
Level: 66

Posts: 52/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
RT-55J:



Heian: The Mirror Universe is a parallel universe. It exists just as the normal universe exists. This game happens during the exact same time as Super Mario Bros. 3. In the Mirror Universe, Mario is a soldier of the empire, trying to help take down the resistance, the rebels (koopas). The koopas are the good guys. Mario is a part of the empire (the bad guys).

The music is from the two-part Episode of Star Trek: Enterprise, titled "In a Mirror, Darkly"

This is the YouTube video that inspired my preview trailer:

http://www.youtube.com/watch?v=Dl5zw6fGjdA&NR=1

If you want the music from it, right click and save as:

http://ent.trekcore.com/multimedia/audio/inamirrortheme.mp3

You can actually find the whole episode on YouTube. It's very good, and what has inspired this hack.

Googie: I appreciate the effort you put in to the title screen. Your support and enthusiasm is great. What I was thinking about doing for the title screen, is having the Terran Empire logo in there somewhere:



The crows look good too, but I might be trying to lose the "Mario feel" the game has to it, and make the game more serious. I'm not sure yet.

I also implemented an Enemy Physical Hit Counter. Every time you physically stomp or kill an enemy, the counter is increased by 1. Right now I"m working on a way to get it to show up properly. I want the player to be able to see how many enemies he has killed.

I have also been brainstorming about a Mutany Meter, Mission-Based Objectives, and other neat things.

Perhaps, one level you will have to find a p-switch, or one level you will have to kill a boss, or one level you will have to find a certain amount of coins, etc...

Just some ideas I have been thinking of. Plus, the graphics are getting a complete overhaul. I want to put a lot of work into this. Any other ideas or suggestions are welcome!

____________________
My YouTube Channel

RetroRain
Posted on 02-22-08 11:43 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 78594


Fuzz Ball
Level: 66

Posts: 53/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Like what? A mushroom with a knife through it? lol.

____________________
My YouTube Channel

RetroRain
Posted on 02-27-08 10:55 PM, in Quick Question - SMB3 Workshop Link | Quote | ID: 79077


Fuzz Ball
Level: 66

Posts: 54/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days


My rain background for the hills level is acting as water. I don't want Mario swimming in it. Now, I read the readme, I played around with the Object Definition Editor, but I can't seem to get it to do anything. Can this indeed be changed with the editor?

____________________
My YouTube Channel

RetroRain
Posted on 03-01-08 01:24 AM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ (rev. 3 of 03-01-08 09:37 AM) Link | Quote | ID: 79482


Fuzz Ball
Level: 66

Posts: 55/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
Posted by Celice
I saw them too, just didn't say anything ^^;;
Same here. When frantik and Panophobia posted their stuff, I wanted to comment, but I had a lot of typing to do in regards to my own hack.

But I wanted to comment. frantik and Panophobia, I like what I see. Very nice work, and very inspiring. Keep up the good work guys!

EDIT - Here is another preview of Dark Mario. It shows you some of the things I changed. Enjoy!



EDIT - I fixed the glitches!

____________________
My YouTube Channel

RetroRain
Posted on 03-01-08 06:42 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 79535


Fuzz Ball
Level: 66

Posts: 56/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
haha I know. XD I fixed it though. I added some code which compares the tile sets and sets the appropriate one. I could use a little help with one thing: When adding one 16-K PRG-ROM bank to the ROM, you can't just put it anywhere, or the game won't run. Does the total number of PRG-ROM banks have to be an even number? Also, where can I put it to make the game run?

Ice Penguin: I like it. Zelda II is a cool game.

____________________
My YouTube Channel

RetroRain
Posted on 03-06-08 12:36 AM, in Quick Question - SMB3 Workshop Link | Quote | ID: 79814


Fuzz Ball
Level: 66

Posts: 57/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
JaSp, any idea on how to go about doing this? I know $70A is the Current Object Set/Level Type, and I know the actual tile numbers for the rain. I'll be able to do it, if I know what I'm looking for.

____________________
My YouTube Channel

RetroRain
Posted on 03-06-08 09:57 PM, in The NEW General Project Screenshot / Video Thread EX Omega Supreme++ Link | Quote | ID: 79871


Fuzz Ball
Level: 66

Posts: 58/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
I like the title screen. If you don't mind me asking, how did you make it? I've been drawing in Paint, and trying to copy and paste it into YY-CHR, but the graphics don't show up right, because of the coloring. Could you tell me how you did it?

____________________
My YouTube Channel

RetroRain
Posted on 03-12-08 11:54 PM, in Assembler Trouble Link | Quote | ID: 80257


Fuzz Ball
Level: 66

Posts: 59/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
1. What is the best low-level NES Assembler to use? NESASM or FSNASM? Or is it something else?

2. Reason I'm asking, is because these two assemblers are being anal about compiling my code.

They keep saying that my .db or .dws are invalid codes, and they're not. It's pissing me off.

Let me show you some simple code I'm trying to compile:

.inesprg 1
.ineschr 1
.inesmir 1
.inesmap 4

.org $8000
.bank 0

Start:

LDA #$08
STA $2000
LDA #$1E
STA $2001

LDA #$3F
STA $2006
LDA #$00
STA $2006

LDX #$00
Load_Palette:
LDA Palette, X
STA $2007
INX
CPX #$21
BNE Load_Palette

.db $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03

.bank 2
.org $0000
.incbin "font.chr"

.bank 1
.org $FFFA
.dw 0 ;(NMI_Routine)
.dw Start ;(Reset_Routine)
.dw 0 ;(IRQ_Routine)

If I compile this with NESASM



Now, if I leave this out:

LDX #$00
Load_Palette:
LDA Palette, X
STA $2007
INX
CPX #$21
BNE Load_Palette

.db $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03

It will compile, because of the .db. But what I don't get, is that the .db is a prefectly valid code.

Now, lets move onto FSNASM.

FSNASM doesn't recognize a lot of the same code that I used here:



Consulting the FSNASM Readme......



The following directives can be used (the period is optional):

.data - Create a section.
.code - Create a section that will be placed within one bank.
.ram - Allocate an area in the RAM
.zram - Allocate a RAM area, that will end up between $0000 and $2000
.org pression> - Create a section at the specified address.
.end - Ends a section.
.dc - Put specified data, separated with commas.
Use double quotes for character strings.
.incbin - Include a binary file
.equ/= pression> - Define a symbol that will be set equal to the expression.
.align [,] - Align with nn bytes, perhaps fill with xx
.block [,] - Jump over some bytes and perhaps fill with xx
.global - Declare a global symbol
.base pression> - Set the current address
.endb - Restore the address
.defchars < name > [ s ]< range >=< value > [,...] - Define a character set. Place an
"S" to specify a sequence of characters.
.charset - Use a character set.



FSNASM doesn't support .db, .dw, .inesprg, .inesprg, etc.?

So how the hell do I compile my code?

I can compile it easily with NESASM if I take out the .db, and just manually have it read each line by line by line. That's impractical though.




Consulting the NESASM Readme:




Directives
----------


LIST, tell the assembler that you want a complete listing
file. You can later stop temporarily the output with
the NOLIST directive and restart it with LIST.

NOLIST, stop the listing output.

MLIST, include the macros in the listing file.

NOMLIST, stop expanding macros in the listing file.

EQU, assign a value to a symbol. The character '=' has
the same function too.

BANK, select a ROM bank (0-127) and reset the location
counter to the latest known position in this bank.

ORG, set the location of the program counter. The thirteen
lower bits of the address inform the assembler about
the offset in the ROM bank and the third upper bits
represent the page index.

DB, data byte(s).

DW, data word(s).

RSSET, set the internal counter of the RS directive to
a specified value.

RS, assign a value to a symbol; a bit like EQU but here
the value assigned is taken from an internal counter
and after the assignation this counter is increased
by the value specified in the RS directive.
It's a very handy way of defining variables, here's
a small example:

.rsset $2000 ; set the initial value of
; the RS internal counter
my_byte .rs 1 ; define a var of 1 byte
my_word .rs 2 ; " 2 bytes

MACRO, start a macro definition.

ENDM, end a macro definition.

INCBIN, include a binary file at the current location. If
the file is bigger than a ROM bank, as many successive
banks as necessary will be filled and the bank and
the location counter will be updated.

INCLUDE, include a source file at the current location.
Up to 7 levels are possible.

INESPRG, specifies the number of 16k prg banks.

INESCHR, specifies the number of 8k chr banks.

INESMAP, specifies the mapper used.

INESMIR, specifies VRAM mirroring of the banks. refer to INES
header documents (neshdr20.txt). This file should be part of
the compiler archive.




As you can see, NESASM supports these commands, so how come it gives me an invalid message then?



Am I doing something wrong?

____________________
My YouTube Channel

RetroRain
Posted on 03-13-08 12:56 AM, in Assembler Trouble (rev. 2 of 03-13-08 12:58 AM) Link | Quote | ID: 80261


Fuzz Ball
Level: 66

Posts: 60/994
EXP: 2437027
Next: 24824

Since: 09-30-07

Last post: 1929 days
Last view: 951 days
I already figured out what the problem was. I sent a PM to Ailure to have this closed. I appreciate the response though.

For those that are curious, here is what the problem was:

My Code

LDX #$00
Load_Palette:
LDA Palette, X
STA $2007
INX
CPX #$21
BNE Load_Palette

.db $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03

Correct Code

LDX #$00
Load_Palette:
LDA Palette, X
STA $2007
INX
CPX #$20
BNE Load_Palette

Palette .db $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03, $0F, $01, $02, $03

I had to add the label name to the beginning of the data table.

____________________
My YouTube Channel
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50


Main - Posts by RetroRain

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.248 seconds. (330KB of memory used)
MySQL - queries: 130, rows: 162/162, time: 0.229 seconds.