Contribute your own characters, powerups, enemies, level ideas, items or gameplay ideas to this thread.
Name: undecided
Genre: platforming, action
Graphic mood or style: colorful and cartoony
Music genre: trance, using 2A03+VRC7 or 2A03+N106 style samples
Protagonist: teenage girl, cute outfit, long hair in 2 ponytails (color undecided)
Story: Idk, something about restoring peace to some make-believe universe
Abilities: jumping, ducking, 8-way speed dashing attack
Attacking enemies: undecided, either jumping ontop of an enemy (Mario style), jumping at an enemy (Sonic) or only using speed dashing attacks
Powerups:
-fire: breaths fire out of her mouth
-electricity: sparks the ground
-invincebility
Enemies:
-small robot: goomba like enemy
-slicing pendelem
-sparking robot: sparks the ground
-pirate dude: throws swords
Items:
-powerup blocks: break when doing dash attack
-magic teletransportation mirror
Level ideas:
-grassy level
-pirateship level
-underwater level
-pyramid level
-industrial level
-cave level
-lava level
bosses: undecieded
Job offerings:
main engine programming:
Me (attempting to make the engine as readeable and intuitive to progam as possible to minimize the guess work)
object programming:
open
graphics:
open
music:
open
level designing:
open
level editing GUI programmers:
open
How about an Alice type story. Girl brought to another world to help save a bunch of cute things. Maybe she has one of them acompany her as a side kick. The side kick provides her with extra moves or helps her access certian areas/things. The enemies can look the opposite of the cute things.
You could use my 2A03 sound emulator, if you want. I realize it's not as optimal to run the music engine on the CPU-side (on the SPC it's only the hardware timer and sweep emulation that gets it busy much - and most stuff doesn't use that) but I think it's definitely worth it, as there are many people who make great NSFs.
Also it would be nicer doing this, compared to playing NSFs because you can build an SNES version of the actual music engine and retool things a lot easier. Then the only thing to do is copy the NES register contents (kept in RAM) over to the SPC.
HJRodrigo wrote:
How about an Alice type story.
The NES already had one of those;
it was called Super Mario Bros. But I'm not putting the idea down; a
gender flip is
fine too.
One word of advice: Don't make the levels too linear, or you might end up making a
game on rails that could be confused for
a Disney Interactive game or
two. Even SMB1, with the linear constraints of the level data format and early scrolling engine (before the technique of mixing $2005 and $2006 writes was discovered), had pipes and vines.
So, you have a project to create a SNES platformer, and have people of NESdev collaborate on a little everything in the game ?
The idea sounds very good, however it will require quite some organization.
I don't want to be pessimistic, but
at least a previous attempt at a collaborative NESdev game has gone to a deadend.
That being said, it sounds like a cool project. Trance 2A03 + N106 music on the SNES ? Sounds cool, but what exacly do you mean by this ? The use of basic BRR samples to make cool music ? Would definitely be great innovation.
However I think it should be properly programmed in SPC. Membler's emulator is just an emulator - it would likely draw a lot of performance in a game - and I'll mention the problem that everything sound terribly lowpass filtered.
Will there be only one playable character (that ponytail girl) or will be multiple character, her being the principal one ?
Quote:
Membler's emulator is just an emulator - it would likely draw a lot of performance in a game
Not any more than it would on the NES. The music driver can be executed natively on the S-CPU as long as some RAM has been set aside for it. Then you'd have to send the updated APU register values to the S-SMP (i.e. 24 bytes per frame) and let it do the rest.
tepples wrote:
(before the technique of mixing $2005 and $2006 writes was discovered)
Devil World anyone?
Devil World (U)
Release date: January 1, 2078
But seriously, I'm pretty sure that much of the SMB1 architecture was in place before Devil World (J) was released.
Basic overview of sprite system:
Every sprite entry will be set up in 6 words:
word 1: sprite height (measured in 16x16 pixel blocks)
word 2: sprite legnth (measured in 16x16 pixel blocks)
word 3: x screen coordinate (center of sprite)
word 4: y screen coordinate (center of sprite)
word 5: ROM address
word 6:
byte 1: ROM address bank
byte 2: attributes
-Sprite height, sprite legnth, ROM address and ROM address bank can be changed only on EVEN frames. Coordinates and attributes can be changed on either EVEN or ODD frames.
-Up to 96 16x16 blocks are availiable
-sprites are stored exactly how they appear in most CHR editing programs such as tile-molester and YY-CHR.
Quote:
Will there be only one playable character (that ponytail girl) or will be multiple character, her being the principal one ?
Maybe she can have a twin sister with a different hair color.
Memblers wrote:
You could use my 2A03 sound emulator, if you want. I realize it's not as optimal to run the music engine on the CPU-side (on the SPC it's only the hardware timer and sweep emulation that gets it busy much - and most stuff doesn't use that) but I think it's definitely worth it, as there are many people who make great NSFs.
Also it would be nicer doing this, compared to playing NSFs because you can build an SNES version of the actual music engine and retool things a lot easier. Then the only thing to do is copy the NES register contents (kept in RAM) over to the SPC.
I'm interested. Anything I can download?
Oops, I forgot the link. All the stuff is here, source is in 2a03-src.zip.
http://membler-industries.com/SNES/
main.asm is kind of a mess, but I guess most of the stuff in there you won't need at all. The SPC stuff is in spc.asm. I don't know how much SPC memory got used, but I doubt it's much so there should be plenty of room for more samples. Let me know if you have any questions about WTF is going on in the source there.
Is it software mixed, or does it take up 5 channels?
It uses 4 channels, DPCM isn't supported. The BRR compression really aliases the sharpness of the pulse waveforms, though. I used very tiny samples, so I'm thinking longer samples with the freqs scaled up might help it, I don't know by how much though.
I'm a little disappointed. BTW, didn't Blargg make a WAV player with the SNES a while ago? I have to look for that.
Dang it, it's in a compression format my computer doesn't support. Why can't people just use .zip and make life simpler?
psycopathicteen wrote:
Why can't people just use .zip and make life simpler?
Because there are better alternatives?
I downloaded a .Z7 extractor and it STILL won't extract.
It's compressed with 7z because bandwidth isn't free, and zip makes the file 600K larger (2.9 versus 3.5 MB). Given that I expected it to be downloaded a lot, I wanted to slim it as much as possible. For smaller files where accessibility is important, I agree that zip is THE way to go. Nothing beats it in wide support, and lightweight implementations.
As for the corrupt file, I just downloaded it fine. Try the mirror link, as the nyud.net one kept cutting off on me before the entire thing downloaded.
Memblers wrote:
so I'm thinking longer samples with the freqs scaled up might help it, I don't know by how much though.
Quite a bit in some cases (at least it did back when I was writing my VGM player):
mic_ wrote:
The results can be quite noticable, as can be heard in this song from Alex Kidd in Miracle World:
.SPC (old frequency table).SPC (new frequency table).VGM for reference
I've just figured out why my test SPC code wasn't compiling in the past. I guess now I can program my own software mixed 2A03 emulator, so I can run SPC and 2A03 music at the same time.
How do you plan on BRR-encoding the mixer output though?
If you're thinking about outputting uncompressed samples by writing to the echo buffer, then you'll be on a pretty tight cycle budget (maybe something like 100 cycles/sample at decent quality). It seems unlikely that you'd have time to emulate the 2A03 with that approach.
mic_ wrote:
How do you plan on BRR-encoding the mixer output though?
Each 9-byte block of BRR contains a couple control bits, a volume scaling amount, and an index selecting one of four
IIR de-emphasis filters, followed by sixteen 4-bit signed PCM samples. One of these filters has zero for both feedback coefficients, which means the block is straight 4-bit signed linear PCM. I imagine that a mixer running on the SPC700 would encode the result to LPCM, possibly losing a bit of DAC resolution.
Mixing 4 (or 5) channels into a single sample with 4-bit resolution would probably not sound too good.
And if you wanted to get crisper waveforms by playing longer samples at a higher frequency you'd probably have to set aside a fair amount of SPC RAM for the output buffer,
Switching from 16-bit to 4-bit isn't loosing "a bit" of DAC resolution - it's massive lost.
For echo buffer writes, you have 32 cycles per sample to be computed (the output is read at 32kHz and the CPU is clocked at 1024 kHz). Considering that I think quite a few instuctions takes 2 cycles, this isn't a whole lot - barely enough for something really simple I think.
Bregalad wrote:
Switching from 16-bit to 4-bit isn't loosing "a bit" of DAC resolution - it's massive lost.
The NES's DAC isn't 16-bit; it's the sum of four 4-bit DACs (and a 6-bit DAC if you're handling DPCM).
But emulating the NES's APU into samples at full speed isn't likely to happen without serious aliasing artifacts.
This is a drawing of my ponytail girl character.
http://img808.imageshack.us/img808/2377 ... ilgirl.jpg
I downloaded a trace song, and downsampling it to 16kHz to see how it sounds like.
http://www.supload.com/sound_confirm.ph ... 387279.wav
Here is my code for loading a spc700 routine. I don't know if it works or not. Please tell me If I'm doing this correctly.
Code:
rep #$30
wait_for_spc:
lda $2140
cmp #$bbaa
bne wait_for_spc
sep #$20
ldx #$0200
stx $2142
lda #$01
sta $2141
lda #$cc
sta $2140
wait_for_spc2:
lda $2140
cmp #$cc
bne wait_for_spc2
ldx #$0000
pha
spc700_loading_loop:
pla
lda $308000,x
sta $2141
phx
pla
sta $2140
wait_for_spc3:
cmp $2140
bne wait_for_spc3
inx
cpx #$0209
bne spc700_loading_loop
stz $2141
ldy #$0200
sty $2142
inx
phx
pla
sta $2140
pla
psycopathicteen wrote:
I'd recommend a little more clothes than that, especially if you plan to have an
ice world.
That's really not my type of girl at all.
Bregalad wrote:
That's really not my type of girl at all.
I have to agree with that one
What is your type of girl then?
Who cares what "type" of girl you like. But I do think what you have drawn there looks silly. It looks like something that would fit a cutesy perverted (Japanese perhaps) game. Think about the personality your character should have for the game. Now if that's what you want then it's your choice.
I'd say keep the hairstyle. But everything from the neck down looks a bit
fan service. I'd say start with halfway between
Alice and
Belle, then modernize it a bit. (Disney!Alice is little changed from PD!Alice so you need not be paranoid about copyright.)
In a retro game I would prefer a cute girl protagonist that is cute in the sense of adorable or sweet not cute as in attractive or sexy. It is also easier to do sprites for the first kind of cute. You can easily deform them and keep them looking adorable. In my personal opinion, i think you should shoot for a more innocent look versus slutty or temptress. It is easier to sympathize with a sweet girl in danger than a girl that looks like she can take care of herself, but if you can make it work more power to you. I still don't know what kind of mood you are shooting for in the game
psycopathicteen wrote:
What is your type of girl then?
The heroine of the NES game I'm making.Now more seriously, there is many types of girls that I'd fall for. However, if it is an heroine, it takes skills to make one who looks cool and sexy, but doesn't look like a b****. Art is art - and is not an easy task.
Quote:
In a retro game I would prefer a cute girl protagonist that is cute in the sense of adorable or sweet not cute as in attractive or sexy. It is also easier to do sprites for the first kind of cute.
In a RPG with multi characters party, I'd say the best is one of each. RPGs are fun because you love all its party with all characters having their pros and flaws. But in a single-protagonist game, this protagonist must be an absolute flawless hero (ok it CAN have flaws, but only minor ones) that should be totally cool (think of Megaman, Belmot's family, etc...). Don't repeat the error of the crator of Tomb Raider games...
psycopathicteen wrote:
Here is my code for loading a spc700 routine. I don't know if it works or not. Please tell me If I'm doing this correctly.
Use some
already-tested code. It's tricky getting all the bits right. It'd take someone at least an hour to carefully test your code.
psycopathicteen wrote:
I can't stand that face.
Bregalad wrote:
But in a single-protagonist game, this protagonist must be an absolute flawless hero (ok it CAN have flaws, but only minor ones) that should be totally cool (think of Megaman, Belmot's family, etc...). Don't repeat the error of the crator of Tomb Raider games...
You have a good point. There are other models for an action girl that aren't all fanservice. Smash Bros. alone has Zero Suit Samus and Sheik.
blargg wrote:
psycopathicteen wrote:
Here is my code for loading a spc700 routine. I don't know if it works or not. Please tell me If I'm doing this correctly.
Use some
already-tested code. It's tricky getting all the bits right. It'd take someone at least an hour to carefully test your code.
Um, do you have an spc
loading routine.
Btw, what assembler are you using, it doesn't look the same as spcas. Spcas doesn't allow macros.
With the girl, I don't find her slutty looking, and I wasn't intending her to be. I was trying to make a cross between Sailor Moon and Hatsune Miku.
psycopathicteen wrote:
Um, do you have an spc loading routine.
snes_play_tone.s has a loading routine: the four subroutines starting at spc_wait_boot.
Thanks a lot Blargg! This will help me a lot!
psycopathicteen wrote:
With the girl, I don't find her slutty looking, and I wasn't intending her to be. I was trying to make a cross between Sailor Moon and Hatsune Miku.
I would say try to make the look fit what ever personality you have in mind. Her outfit is strange for an average person to be walking around in, so in my brain I tried to associate what kind of work would she be doing in that outfit and all I could think of was stripper
. I suppose if she was coming from a comic con, a costume party, or different universe it could explain her unusual outfit. If you give context to the outfit I suppose it could work. I just don't know what frame to look at the character yet, as the story has yet been made. So I can't give any good input yet as to the character design
.
HJRodrigo wrote:
psycopathicteen wrote:
With the girl, I don't find her slutty looking, and I wasn't intending her to be. I was trying to make a cross between Sailor Moon and Hatsune Miku.
I would say try to make the look fit what ever personality you have in mind. Her outfit is strange for an average person to be walking around in, so in my brain I tried to associate what kind of work would she be doing in that outfit and all I could think of was stripper
. I suppose if she was coming from a comic con, a costume party, or different universe it could explain her unusual outfit. If you give context to the outfit I suppose it could work. I just don't know what frame to look at the character yet, as the story has yet been made. So I can't give any good input yet as to the character design
.
She lives in another universe. Would explain more, but going to bed.
EDIT: Couldn't sleep, too much on my mind. Got up, tried once again today making Blargg's tone generating code xkas compatible. Breaking News, I GOT IT TO WORK! I finally have access to the SPC700! Now I can go back to sleep.
Bregalad wrote:
In a RPG with multi characters party, I'd say the best is one of each. RPGs are fun because you love all its party with all characters having their pros and flaws. But in a single-protagonist game, this protagonist must be an absolute flawless hero (ok it CAN have flaws, but only minor ones) that should be totally cool (think of Megaman, Belmot's family, etc...). Don't repeat the error of the crator of Tomb Raider games...
This is a good observation. RPGs work quite well with a mix of different personalities with flaws.
psycopathicteen wrote:
[
She lives in another universe. Would explain more, but going to bed.
Fill us in as you get the story/universe worked out
.
This is a screen of some of the enemies in the game, along with a pixel version of my ponytailed girl character.
I think I'll name her Alisha.
psycopathicteen wrote:
This is a screen of some of the enemies in the game, along with a pixel version of my ponytailed girl character.
I think I'll name her Alisha.
That face is nightmare fuel. She will eat me.
I know that I will be rude by saying so but I will tell it anyway. You lost my credibility when you said that it was a mix with Sailor moon. That's an animation for 4 years old ^^;;. I don't think it make sense unless this is your target audience.
Don't get in the same weirdo bangwaggon that I see from those freaks at Akihabara, please. The other sprites are nice though.
I fixed a few misplaced pixels on the right side of her hair.
Quote:
That face is nightmare fuel. She will eat me.
You know it's incredibly similar to you avatar, do you ?
Quote:
That's an animation for 4 years old ^^;;. I don't think it make sense unless this is your target audience.
The same could be said of Gimmick, Uforia, and maybe some other NES games I don't remember that quite a few people on this board seems fond of.
Will you make the game compensate for NTSC/PAL speed differences? Project MD does, mainly because otherwise people would yell at me because the game runs at a different speed.
Also why only update sprite graphics on even frames?
Sik wrote:
Also why only update sprite graphics on even frames?
Because we don't pay the animators enough to draw 60 sprite cels per second
(See also
sprite cel frame rate discussion.)
Sik wrote:
Will you make the game compensate for NTSC/PAL speed differences?
I'm not sure about the SNES, but on the NES I think that would be kinda hard to do. If I had a lot of free CPU time, I'd first think of simply running an extra logic frame after 5 frames on a PAL console, but that would screw up the VRAM updates, which usually have RAM for only 1 frame worth of updates. Another option would be to use different physics constants for each type of console, but since we use fixed-point numbers, even the smallest rounding errors could result in the game behaving too differently.
Sik, if you don't mind me asking, what method did you use on the MD to compensate for the speed difference?
tokumaru wrote:
If I had a lot of free CPU time, I'd first think of simply running an extra logic frame after 5 frames on a PAL console
That would create an effect similar to telecine judder.
Quote:
Another option would be to use different physics constants for each type of console, but since we use fixed-point numbers, even the smallest rounding errors could result in the game behaving too differently.
On the NES, you sometimes have to reduce the precision of your fixed-point arithmetic to fit a world coordinate into 16 bits (two machine words). For example,
one platformer uses quarter pixels as its fundamental unit (Q14.2). On the Super NES, two machine words are 32 bits, and you can use Q16.16 coordinates even if your map is 256 screens wide. But as you point out, the trouble would come from testing every jump in the game on both versions to see which ones the player can make or not make. I seem to remember this being noticeable in some Quake engine game, in which the player can make the most difficult rocket jumps only at specific frame rates. And you might have to accept the fact that
character balance will differ.
I won't give my head on it, but Sik uses different values between 50/60Hz... on MD you can do 16.16 fixed point math in a much more easier way than anything else.
TmEE got it. It's that or people complain because the game runs too slow.
Tepples, his post implies that any animation not aligned to even frames will be impossible. Project MD has lots of animations with sprites lasting 3 frames, for example.
PAL version, odd frames are alowed.
NTSC version, no.
btw, coordinates can change on odd frames, just not animation cells.
I fail to see how that improves anything. I mean, in the end all tile updates have to happen in a single vblank, so why is there that limitation?
Presumably becaues on even frames the NTSC version is doing other updates during vblank, for which adding the character animation as well would go over the available time.
Sik wrote:
I fail to see how that improves anything.
I don't think it's supposed to improve anything, it's just that apparently there is not enough VBlank time on the NTSC console to update the sprite patterns
and perform other necessary tasks. I think he made a thread explaining his animation method recently.
Quote:
I mean, in the end all tile updates have to happen in a single vblank, so why is there that limitation?
Because of other updates that also need VBlank time.
I don't think that this is a mandatory thing for the SNES, it's just his engine that was designed that way. I too have limitations like these in my CHR-RAM NES game. I even have to double buffer the main character's tiles, since they can only be updated all at once if no other VRAM update is necessary for a frame.
I'm now using a modified version of my old dynamic animation engine.
My old engine uploaded 64 16x16 sprite cells over 2 consecutive frames (32 cells each) with the other 64 sprites using permanant v-ram sprite patterns.
My new engine is a little bit simpler. It uploads 96 16x16 sprite cells over 2 consecutive frames (48 cells each) without using any permanant v-ram sprite patterns.
But they both rely on the same double buffer, 1-frame-oam-delay method that I came up with. Both versions have advantages and disadvantages, but the second method doesn't take as much thinking when you want to add in a new character or object.
This is a ROM and an .asm file. It's just the basic engine. Background and sprite handling. It's not very entertaining the way it currently is, but I incourage people to play around manipulating the source code.
$0000-$0003 are joypad input
$0004 blanks the screen allowing you to update a new level
$000c counts to frames from 0-3 then repeats
$0010 x-coordinate BG1
$0012 y-coordinate BG1
$0014 width of level in tiles (only powers of 2 work)
$0016 = #2^20 / $0014
$0018 = $0010 / #16
$0020 x-coordinate BG2
$0022 y-coordinate BG2
$0028 = $0020 / #16
$0030 # of metasprites onscreen
$0800 metasprite list starts
$7e2000-$7effff
RECOMMENDED FOR RUNNING GAME LOGIC SINCE NOTHING IS USED IN THIS HUGE REGION OF MEMORY
$7f0000-$7f7fff tile map
http://www.mediafire.com/?wzb6u3pansbntwr
I tried it in SNES and thought thigns were broken in it.... so I DLed BSNES and tried it there... and now I'm disappointed
fun note though... BSNES runs on my 98SE setup, ableit slowly because 1.4GHz PentiumIII is well below recommended CPU power
(it will not run on vanilla 98SE though, KernelEx is needed to get it run)
What are you seeing onscreen? If there is a "1" made out of "X"s then it's working correctly. I'm working on some real graphics now.
Why have hardcoded addresses for variables when you can define proper names for them?
mic_ wrote:
Why have hardcoded addresses for variables when you can define proper names for them?
So as not to have to give out relocatable object code that works only in one assembler. Or can the ca65/ld65 toolchain interoperate with other 65816 toolchains?
I don't see why compability with all assemblers should be a goal, especially if it makes the code a mess.
tepples wrote:
mic_ wrote:
Why have hardcoded addresses for variables when you can define proper names for them?
So as not to have to give out relocatable object code that works only in one assembler. Or can the ca65/ld65 toolchain interoperate with other 65816 toolchains?
I think he meant just giving the addresses names, so that a human reader doesn't have to memorize them, and so that moving variables isn't an exercise in adding bugs. e.g.
foo_var EQU $0001
bar_var EQU $0002
I don't see the point, though. Why even use mnemonics? Real men memorize opcodes and write in binary.
.byte %10100101,%00000010 ; What, this doesn't look like lda bar_var to you? Tough!
Quote:
but I incourage people to play around manipulating the source code.
My god man, at least use equates
Edit: Indexing/tabbing your code could be nice too (make it more readable IMO). I dunno. Maybe I'm an old grumpy fart, but prefer clean looking/easy on the eyes source code nowadays
Sorry for the slowness of development. I have a lot of homework from school and don't have much time to work on it.