Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,596,461
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 05-18-24 02:32 AM
Guest: Register | Login

Main - Posts by smkdan

Pages: 1 2 3 4 5 6 7 8 9 10 11 12

smkdan
Posted on 07-19-07 12:43 PM, in About vsnes and hacking rom via through the ram map. Link | Quote | ID: 56227


Ninji
Level: 36

Posts: 61/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
I haven't played as much as X2 as I did with X3. Can you get powerups and stuff that change your suit?

Also, I didn't take into account the powering up palette.

2B300-2B31F: Palette of plain mega man.
2C480-2C49F: Palette of mega man powering up. It's alternated between frames. It just has more blue added to his suit.

Again, those are headered.


smkdan
Posted on 07-22-07 07:29 AM, in About vsnes and hacking rom via through the ram map. Link | Quote | ID: 56729


Ninji
Level: 36

Posts: 62/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
Try messing around with something like color picker (from MSPaint) to get the colors you want. Convert the RGB you get from it to hex and put it in that color converter.



That calculator is glitchcog's though, not mine.

smkdan
Posted on 07-25-07 08:06 AM, in 'offset change' in mode 2 SNES!?! Link | Quote | ID: 57761


Ninji
Level: 36

Posts: 63/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
[citation needed]

smkdan
Posted on 07-25-07 03:14 PM, in 'offset change' in mode 2 SNES!?! Link | Quote | ID: 57819


Ninji
Level: 36

Posts: 64/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
I had a closer look at it in the dev manual.

BG3's display limitations has nothing to do with it. BG3 is not displayed at all, it looks like it just uses the BG3 tilemap pointer to point to a set of scroll values for each corresponding tile on BG1/BG2 as defined in the 'tilemap' bytes that would normally be used for BG3 display.

cory21391: A closer look on the mode is on page 208 on book1.pdf.

smkdan
Posted on 07-26-07 07:23 AM, in SNES Programming Guide Link | Quote | ID: 58195


Ninji
Level: 36

Posts: 65/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
You can find the official manual at romhacking.net

http://www.romhacking.net/docs/225/

Yes, it's pretty hefty. Those bookmarks come in handy.

smkdan
Posted on 07-26-07 10:55 PM, in SNES Programming Guide (rev. 2 of 07-26-07 11:02 PM) Link | Quote | ID: 58533


Ninji
Level: 36

Posts: 66/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
I mixed up the names...that one was for the SFC. This one is for the SNES. I didn't download the SFC one, but the SNES one is in english anyway. The explanations can be confusing sometimes but its still a comprehensive source.

http://www.romhacking.net/docs/226/

Edit: Why are posts being randomly destroyed with 'citation needed'?

smkdan
Posted on 07-29-07 02:53 AM, in SNES Programming Guide Link | Quote | ID: 59257


Ninji
Level: 36

Posts: 67/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
The SNES does have multiply / divide built in, just not as instructions. Look at $4202 in anomie's regs.txt. It's all explained in that area.

If you're working with multiplying / dividing numbers in powers of two, bitshifts are the ideal choice. If you want to multiply by say, a fixed amount of 5, however, software is still viable. If you have a number you want to multiply at $0123...


REP #$20
LDA $0123
ASL A ; x2
ASL A ; x4
CLC
ADC $0123 ; x5


You'd weigh up the speed of using the hardware multiply / divide against the software alternative. If you're using variable multiplier / divisors you'd always use the hardware option I guess.

smkdan
Posted on 07-31-07 08:22 AM, in Homebrew game in the works...?? Link | Quote | ID: 59672


Ninji
Level: 36

Posts: 68/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
The only SNES homebrew games I know are rape games and this anti aircraft tank game. They both suck. Particularly the former. It's nice to see something fresh.

You'd get around 12FPS video with a full screen of 4bpp tiles. 64x64 is an easy 60FPS. It's a matter of balancing out size with speed. Tile space in video memory isn't really an issue, since you have enough room for a screen full of unique 8bit tiles with roughly 8k to spare. Aslong as you don't have much else going on at the time, it's more of a problem with your cart capacity.

smkdan
Posted on 07-31-07 08:55 AM, in Homebrew game in the works...?? Link | Quote | ID: 59676


Ninji
Level: 36

Posts: 69/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
If you want to go all the way with the video, SA-1 does have some nice bank switching features (page 32 in book2.pdf). Looks like you switch in 1Mbyte chunks into one of two 4Mbyte memory areas. I think for the purpose, the SDD-1 could've been the ideal choice. Decompression 'on-the-fly' sounds like you can just DMA straight for compressed ROM to video memory and the chip handles all the decompression. Haven't seen much info on it though.

smkdan
Posted on 08-03-07 01:48 AM, in Homebrew game in the works...?? Link | Quote | ID: 59797


Ninji
Level: 36

Posts: 70/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
Carts really can't be bigger than 6 megabytes.

Did the 6MB games bankswitch with some on cart hardware or did they have unique data where there would otherwise be mirrors of other data? I mean if C0:0000 would contain different data from 80:8000.

I wonder this because I see some hacking threads on DKC, but it's already 32Mbits. It runs program from either sections of the ROM. If 80:8000 / C0:0000 were to be changed it would break the game without a massive rewrite. You wouldn't have any expansion space for levels.

smkdan
Posted on 08-09-07 10:52 AM, in Yet another SNES ASM problem... Link | Quote | ID: 61392


Ninji
Level: 36

Posts: 71/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
There's two 256 tile nametables for the sprites. The base bits define the location of the first, and the name bits define the location of the second relative to the location of the first. regs.txt says this for retrieving a sprite.

((Base<<13) + (cccccccc<<4) + (N ? ((Name+1)<<12) : 0)) & 0x7fff


i.e. If the base bits equal 2, then the first nametable is at 4000h word in video memory. If the name bits are equal to 0, it's stored directly after the first, at 5000h in that case. There's a nametable select bit for each sprite to choose which one to get the sprite from.

regs.txt also says this:

Writing to either $2102 or $2103 resets the entire internal OAM Address
to the values last written to this register. E.g., if you set $104 to
this register, write 4 bytes, then write $1 to $2103, the internal OAM
address will point to word 4, not word 6.


So as you're writing 1 byte to $2103, $2102 will be set back to the value you last wrote to it.

smkdan
Posted on 08-12-07 02:28 PM, in Can I have some preset HDMA tables? Link | Quote | ID: 61970


Ninji
Level: 36

Posts: 72/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
In WLA, .DBSIN and .DWSIN let you create tables very easily. You enter the starting angle, number of entries, rate of oscilliation, amplitude, and an optional additive. It'll conveniently create a bunch of signed numbers from it.

smkdan
Posted on 08-14-07 08:16 AM, in damn damn damn Link | Quote | ID: 62340


Ninji
Level: 36

Posts: 73/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
I'd put an AND #$XX before your CMP #$XX's in the joypad loop. Otherwise it'll only take a set key combination and refuse to branch when any other keys are set (from that byte).

smkdan
Posted on 08-27-07 08:07 AM, in Obviously we have a problem Link | Quote | ID: 63885


Ninji
Level: 36

Posts: 74/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
2 for me.

smkdan
Posted on 09-02-07 04:08 AM, in Changing springboard jump height. Link | Quote | ID: 64532


Ninji
Level: 36

Posts: 75/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
$7D and $9C are RAM addresses. You're changing the target address altogether.


CODE_01E6A2: A0 80 LDY.B #$80
CODE_01E6A4: 8C 06 14 STY.W $1406
CODE_01E6A7: 84 7D STY RAM_MarioSpeedY
CODE_01E6A9: A9 08 LDA.B #$08 ; \ Play sound effect
CODE_01E6AB: 8D FC 1D STA.W $1DFC ; /
CODE_01E6AE: 80 40 BRA CODE_01E6F0


I took a quick look at it. The LDY.B #$80 will change the height. Turns out 80h is the highest value actually, and increasing it will lower his jump height. Values from 00-7F will ground him to the spring board (when you hold B). However it's interpreted, there's a bunch of sign bit conditionals.

smkdan
Posted on 09-10-07 11:14 AM, in ASM to Hex (rev. 2 of 09-10-07 11:16 AM) Link | Quote | ID: 65145


Ninji
Level: 36

Posts: 76/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
in.asm contains:

PHA
LDA $1422
CMP #$01
BEQ OnOffFlag
LDA #$01
STA $14AF
OnOffFlag:
PLA
RTS


Then to assemble, first parameter is source, second is output or ROM to patch.

xkas in.asm out.bin


out.bin contains:

48 AD 22 14 C9 01 F0 05 A9 01 8D AF 14 68 60

The ASM file is pretty bare but it's all you need there.

smkdan
Posted on 10-01-07 05:51 AM, in How do I redirect code in a expanded NES rom? Link | Quote | ID: 66810


Ninji
Level: 36

Posts: 77/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
I suppose by expanding the ROM you added extra banks to it. To switch them, look up the info on the mapper it uses (MMC3?) and see how it switches banks. You'd write a bank # and whatever other details to the mapper from program in an area that isn't to be switched. That's all I can say. There's mapper info on RHDN if you need it.

smkdan
Posted on 11-24-07 02:33 PM, in My sample utility Link | Quote | ID: 70636


Ninji
Level: 36

Posts: 78/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
If you read SMWC, you'd see I'm making a utility where you can import wave files into SMW.



http://smkdan.eludevisibility.org/other/swmws12.rar

How it works: You start with 0xFE0 bytes of free space and you delete existing samples from the game / insert .wav files into it. You can have different size files since it modifies the pointer tables as you go. It's in a crude stage but I had no problem getting samples in game running. There's no support for looped samples at the moment, but it's only 3 days old.

The first time you use this, you'll be prompted to point to some free space. You'll only be asked once. This is so it can use the vacant space in the SPC RAM while also making room for the extra bytes it uses.

This uses snesbrr for all the conversions. Credit to DMV27.

Any thoughts?

smkdan
Posted on 11-25-07 03:54 AM, in My sample utility (rev. 3 of 11-25-07 06:17 AM) Link | Quote | ID: 70664


Ninji
Level: 36

Posts: 79/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days
Thanks for the feedback.

blackhole89: Modifying the ADSR settings and such would be very useful here...It's definitely a priority for a possible new feature. I never examined N-SPC that much, but I assume for every instrument / SFX command there is a table of ADSR data to use for it, a sample # along with any special effects like pitch sliding (springboard). I'll try out bSNES sometime and see how it pulls the data that end up in the DSP settings.

And I realised I was already crossing bank bounaries with over 32,768 bytes of data. This time, EVERYTHING (RATS tag, my extra bytes and all SPC data) fits in one bank. You need to at the prompt insert the data into a bank boundary.

http://smkdan.eludevisibility.org/other/smws13.rar

Edit: on that note, I started collecting data on the SPC code.

For the coin sound you hear on reset, it fills $60-$67 on the DSP end which sets all the writebale per channel settings. It comes from a table at $5570 in SPC RAM and is indexed by multiplying an input varable by 9 (the remaining byte is used for something else). I see from the ROM that it's A6B bytes long.

smkdan
Posted on 12-14-07 05:50 AM, in My sample utility Link | Quote | ID: 71674


Ninji
Level: 36

Posts: 80/238
EXP: 289154
Next: 18956

Since: 05-26-07

Last post: 4084 days
Last view: 4033 days


I made an update which has it updated the envelope, base pitch and stuff for SFX. It expands the "sample map" to 256 bytes by moving some stuff around. The next step for me is making an editor for the SFX commands of $1DFC / $1DF9. Does what you see there line up with your presonal knowledge? I messed around with it a bit and it sounds like I got it right to me.

http://smkdan.eludevisibility.org/other/smws18.rar

Pages: 1 2 3 4 5 6 7 8 9 10 11 12


Main - Posts by smkdan

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

Page rendered in 0.232 seconds. (332KB of memory used)
MySQL - queries: 137, rows: 169/169, time: 0.224 seconds.