logo
 drop

Main

Community

Submissions

Help

56579230 visitors

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Revenant

Pages: [1] 2
1
It also setups a lot of other things that are non-relevant to the OP snippet; what you said makes perfect sense, so MyArray is just an array of words, each of them being the VRAM destination tile address, and by offsetting with $35CC I also get the corresponding WRAM location?

So there is a 1-to-1 tilemap in WRAM at  $7F35CC that gets each time this proc is called partially copied to VRAM? In this case what about "CPX   #$20" ? Does it mean that loop will exit either when finding a 0xFFFF word or when 32 tiles have been copied?

Mostly right, except it's limited to 16 tiles, not 32 (X is incremented by two bytes each time, because it's reading 16-bit addresses).

The setup code, among other things, sets up the areas in VRAM where each graphics layer pulls its data from:
Code: [Select]
LDA #$00
STA $2133 ; enable progressive mode, no overscan, etc

LDA #$58  ; BG 1 tile map is at $5800 (($58 && $FC) << 8)
STA $2107 ; BG 1 vertical mirroring is disabled   ($58 && $02)
          ; BG 1 horizontal mirroring is disabled ($58 && $01)

LDA #$5C  ; BG 2 tile map is at $5C00 (($5C && $FC) << 8)
STA $2108 ; BG 2 vertical mirroring is disabled   ($5C && $02)
          ; BG 2 horizontal mirroring is disabled ($5C && $01)

LDA #$03  ; BG 1 tile graphics are at $6000 (($03 && $0F) << 13)
STA $210B ; BG 2 tile graphics are at $0000 (($03 && $F0) << 9)

LDA #$05  ; BG 3 tile graphics are at $A000 (($05 && $0F) << 13)
STA $210C ; BG 4 tile graphics are at $0000 (($05 && $F0) << 9)

LDA #$01  ; Enable BG mode 1 (BG1 and BG2 4bpp, BG3 2bpp, no BG4)
STA $2105 ; All four layers use 8x8 tiles (upper four bits are zero)

LDA #$63  ; use 16x16 and 32x32 sprites ($63 && $E0)
STA $2101 ; Sprite graphics are at $C000 (($63 && $07) << 14)
          ; ("tile map" is in OAM, separate from VRAM)

LDA #$80  ; surround Mode 7 background with empty space
STA $211A ; (not really relevant right now)

LDA #$13  ; Enable BG1, BG2, and sprites, leave BG3 and BG4 disabled
STA $212C

STZ $212D ; Disable subscreen, window masking, color math
STZ $2130
STZ $2131
STZ $2132

So the addresses in MyArray, and the memory regions set up beforehand, determine what effect the DMA transfer has depending on what range the address is in:

Layer 1: Graphics data at $6000, tile map at $5800
Layer 2: Graphics data at $0000, tile map at $5C00
Sprites: Graphics data at $C000

Assuming MyArray is set up to do tile/sprite animation, all of the addresses probably begin at $0000, $6000, or $C000. The tile maps (and separate sprite memory) determine how the tiles that make up each layer's graphics data are arranged on screen; it's not a simple rectangle blit like you'd see on a more modern system  :P

Hope that helps.

2
All that code is doing is transferring one 4bpp tile at a time from a buffer in RAM at $7F35CC to the corresponding location in VRAM (on the SNES, VRAM, unlike work RAM, is addressed in words rather than bytes, which is why the address read from MyArray is right-shifted).

How this actually corresponds to what appears on screen depends on what has been written to several other video-related registers beforehand, which control where each layer's graphics data and tile maps are located in VRAM. This is what defines the actual relationship between where things are written into VRAM and how they actually look on screen.

Anomie's Register Doc has lots of info about these registers. SNES video can be kind of awkward when learning about it, but that document should leave you knowing more about it than you probably wanted to :P

3
The area that lies between $8000-FFFF is known as PRG-RAM, program RAM. This is the place where the ROM banks from the PRG-ROM, program ROM, are loaded into the NES.

I know this isn't really specifically relevant to the topic, but calling this part of the NES address space "RAM" instead of "ROM" is incredibly misleading. Nothing's being "loaded" into any sort of writable memory - what you see is what's physically located in the ROMs.

"PRG-RAM" refers to something totally different (on-cart expansion RAM), which is almost never mapped above $8000.

4
Personal Projects / Re: Untitled Kirby's Dream Course editor
« on: April 26, 2013, 08:18:30 pm »
I definitely plan to support STS when this is done, yeah.

5
Personal Projects / Re: Untitled Kirby's Dream Course editor
« on: April 26, 2013, 05:53:44 pm »
http://dl.dropboxusercontent.com/u/43107309/kirbything6.png

Finally taking some time to implement the 3D tilemap generation. Pretty tedious, but it's starting to look like it shouldn't take as much time as I was initially expecting.

(Forget about that "end of April" thing I said before, though, because I'm a lazy bastard  ;D)

6
Of course it's a markup language. Look at all those angle brackets!

7
Newcomer's Board / Re: Pointers help
« on: April 04, 2013, 08:08:16 pm »
I'm not really certain what Pikachumanson is talking about at all...

NES pointers (a swing and a miss...)

8
Personal Projects / Untitled Kirby's Dream Course editor
« on: March 29, 2013, 09:37:42 pm »
I guess it's time to post a project thread for this or something now

WIP screenshot with bad programmer art and stuff

After documenting the level format and compression and stuff for this game back in January, I started working on this at the beginning of this month. This is both a hacking project and a personal exercise in developing GUI apps (of which this is basically my first).

Currently most of the actual level-editing capability is implemented, though only the Japanese ROM is supported at the moment (both because of the debug mode, and because of its extra test maps which helped me document some stuff).

The main thing to do now is to actually generate new isometric tile maps from the 2D level data. Currently it just uses the levels' existing tilemaps, so editing levels doesn't actually have a visible effect in game yet, except for sprites. (Also it uses pre-existing graphics instead of loading them from the ROM because I'm lazy, and this is why there are some minor visual anomalies in the preview window.)

Special Tee Shot support will also be added eventually.

I hope to have a preliminary version released by the end of April at the very latest, though this really depends on my own laziness and daily motivation (I have a full-time coding job, so I'm not always in the mood to keep going when I get home :P)

I also have a standalone de/compression utility that I was going to release, but I learned that the same exact compression scheme is used in Kirby's Adventure, so now I plan to make a list of different NES/SNES/GB games made by HAL that use the same compression and release it as a multi-purpose tool at some point.

(edit: yes, I know there's already a Japanese editor floating around somewhere, but it's not really that useful IMO)

9
ROM Hacking Discussion / Re: Screenshots
« on: March 15, 2013, 11:32:26 pm »
More editor progress.

Almost all tiles and obstacles are displayed (except for a few obscure enemy variations that I need to verify). Ignore my bad programmer art.

Currently only the tile and obstacle types are actually editable (notice that the height slider doesn't match the Z-values displayed on the selected tiles). No saving yet, either. It's a start.

After that, it'll be a very tedious matter of putting together dozens of big isometric metatiles for the real tilemaps :D

10
ROM Hacking Discussion / Re: Screenshots
« on: February 28, 2013, 07:28:44 pm »

11
I know there is quite a rejection of the existence of snes headers, but please keep in mind that satellaview headers are often mistook to be snes headers (and I didn't even see one mention of them here after my post) but they are very much needed to let the roms be functional. Just wanted to point that out again. Kiddo wanted to create a isolated satellaview set, so I guess this is very needed if you see the general opinion about SNES roms. Esspeacialy if you keep in mind that most of those games havent been hacked or emulated so far. (some emulators and the sd2snes may be an exception) The newer no-intro sets scrapped most of the satellaview headers which made the roms non-functional.
I've.... never even tried to use a Satellaview game/ROM before. But I will remember what you've said about them absolutely requiring headers for future conversations.

So basically, in the blind pursuit of removing useless headers, they also removed essential headers, thereby destroying certain ROMs?

Incredible. And also a little sad. :(

Didn't anybody knowledgeable in the scene try to point this out before it started happening? Or did it just happen and those who knew the Satellaview only found out afterwards? I mean, did you just log on one day and find: oh crap, they've broken the Satellaview ROMs!

I find this all very fascinating.

The only sort of "Satellaview header" that exists is just an alternate form of the internal SNES ROM header, not anything similar to the (now-useless) copier headers and such being discussed in this thread.

From what I understand, the issue surrounding No-Intro's Satellaview ROMs involves copies of games in which certain information in the internal header (time-sensitive info, namely the games' download dates), for whatever reason, is missing, whether removed by hand or otherwise. No-Intro seems to incidentally have a high concentration of Satellaview dumps with this information missing, while GoodSNES is almost the opposite.

It's certainly an issue for Satellaview preservationists, but it's not at all related to the push for headerless SNES ROMs in the sense that you're thinking of.

Edit: I asked Kiddo about it on IRC, since I remembered him talking about this issue a bit in #tcrf, and he clarified the circumstances a bit:
Quote
(10:42:33 PM) Kiddo: All I know is that I tried tracing some ROMs to the earliest source possible
(10:42:41 PM) Kiddo: found ORIGINAL SCENE RELEASES of some BS marvelous ROMs
(10:42:46 PM) Kiddo: and the dates were STILL missing from the headers.
(10:42:58 PM) Kiddo: It baffled me.
(10:43:47 PM) Kiddo: For some reason GoodSNES kept dates in as many ROMs as it could while in the no-intro ROMs they seemed to mostly be gone besides what was dumped when I started Satellablog
(10:44:07 PM) Kiddo: I tried working to correct that but it appears there's some ROMs where we simply can't find ones with dates in.
(10:44:20 PM) Kiddo: The BS Marvelous example there being notable because I basicaly traced it as early as possible.
(10:44:32 PM) Kiddo: it was released that way.
(10:44:40 PM) Kiddo: And that's the only release we can work with.
(10:44:43 PM) Kiddo: :<
(10:45:04 PM) Kiddo: I don't exactly know why or when this started happening, though.

12
Programming / Re: Need help with my code
« on: January 19, 2013, 11:24:08 pm »
Shit, have I been unnecessarily prescriptive?

In that case, carry on  :D

13
Programming / Re: Need help with my code
« on: January 19, 2013, 10:21:21 pm »
I used recursion to make an infinite loop.

For the love of God, don't do this. This is what while loops are for.

14
Front Page News / Re: Utilities: New Utilities Added to the Database
« on: January 09, 2013, 05:08:50 pm »

Oh wow, I was partially responsible for this editor's creation back when I was a 12-year-old SMW hacking idiot. I had no idea it was even still available online.

(Coincidentally, I started working on some cooler Kirby-related hacking this month, but I won't say too much about that yet  :D)

15
ROM Hacking Discussion / Re: bad coding in roms
« on: November 27, 2012, 05:03:32 am »
edit: i shouldn't try to remember forgotten college courses while sleep deprived

16
Newcomer's Board / Re: How to start editing graphics with compression?
« on: November 20, 2012, 02:49:30 am »
LZSSDecomp.decompress('Robotrek.smc', 0x410A2)

17
ROM Hacking Discussion / Re: Screenshots
« on: October 30, 2012, 07:15:06 am »
After two weeks of being lazy and preoccupied with other stuff, I finally sent the Schbibinman (Shockman? Probably.) script off (much appreciated again, DS!) At some point in the meantime I got around to rewriting the text routine a second time so it includes the original fade out effect, and then stole some lowercase letters from Deluxe Paint (I thought I had seen the game's 8x8 font in mixed-case in some other game, but I couldn't find it, so oh well.) I dunno how good all of that plus the colored text looks together, but I'm fairly satisfied with it, I guess.



I actually did.. well.. mockups (couldn't program then either) of a titlescreen and some of the intro graphics for that game about 6 years ago.. been waiting that long for someone to decide to translate it. Nothing special and will probably get passed over, but still...

Looks nice! You wouldn't mind me using these would you?  :)

18
ROM Hacking Discussion / Re: Tell me about RPGe.
« on: October 28, 2012, 03:49:31 am »
You can't talk about the olden days of rom hacking without mentioning Dragon Eye Studios and TEK.  Man, those were the days.  Well okay those days kind of sucked, but it was fun for a while.
Remember the days when people thought "Kirby's Balls" was a good name for a level editor?  :'(

I used to go by "Devin432" on Acmlm's Board (at the ripe old age of 12) and I was very briefly a TEK member. I remember the big stupid feud between TEK and DES being the reason I was so reluctant to join, but solid-tbone (or someone else?) talked me into it (though in retrospect, DES was miles ahead of them anyway...)

Besides being indirectly responsible for the creation of that questionably-named program, I didn't ever bring much to "the scene" except some terrible SMW levels (never released) and other minor SMW-related garbage (a little bit of which apparently made it into "The Second Reality Project 2"); soon after that I started to get bored with hacking, quit TEK (or got kicked out? I really don't remember) and then didn't really do any more messing around with hacking until a couple of years ago.

And there you have it, the True Scene Story of someone who was in a ~famous group~ for about two weeks and then did absolutely nothing of note. Exciting stuff, surely.

http://pt.parodius.com/survey/

This isn't mirrored anywhere, is it? Parodius is no more and archive.org doesn't have it :(

19
Programming / Re: 65c816 - WLA Question
« on: October 24, 2012, 04:18:10 am »
\1, \2, and \3 are the macro's parameters. From the example, \1 is the 24-bit address to load from, \2 is the palette index to write to, and \3 is the number of palette entries to load. So, for example, if you had an array of 16 colors at the address $018000 and you wanted to use those as the first 16 palette entries, you would invoke the macro like this:

Code: [Select]
LoadPalette $018000, 0, 16 ; load palette entries 0-15 from $018000
which would expand to:

Code: [Select]
lda #0
sta $2121
lda #$01
ldx #$8000
ldy #32         ; 2 bytes per color
jsr DMAPalette

Hope that makes sense.

20
ROM Hacking Discussion / Re: Screenshots
« on: October 15, 2012, 12:48:51 am »
As a huge tokusatsu fan, I would be more than willing to translate and spice up the text for you. :D

~DS
That would be great! I can send the script your way soon, I just need to annotate it a bit first.

Shockman Zero?
That's what I was thinking of changing it too, just for the sake of consistency and being able to steal the title logo, but other sensible suggestions are welcome too, of course :P

Pages: [1] 2