Jump to content

Hornpipe2

Members
  • Content Count

    449
  • Joined

  • Last visited

Blog Entries posted by Hornpipe2

  1. Hornpipe2
    Hey guys I haven't given up on this project! Still tweaking things here and there and trying to figure out what to focus on next. I altered things a bit so that the Jump now propels the character forward, while the Jumpkick does not. This leads to a little more player shuffling and much less jumpkick spamming.
     
    Also,
    * added more sound effects - these are almost all subject to change but at least there's audio feedback now
    * made a hacky attempt at stopping the screen rolling on player death (still happens... I see the cause but it's actually pointless to fix it now since I already plan on reworking it later)
     
    Moves still need further balance (the crouching punch is useless, the stomach kick is very strong) to make them useful in different situations. I'm thinking of adding a "forward dodge" if I can figure out graphics for it - the idea would be that you could get behind an opponent spamming high attacks like the face-kick by rolling under him instead.
     
    k_master_test4.bin
  2. Hornpipe2
    Some beta testers you lot turned out to be! Nine people downloaded the binary and no feedback. I figured it's probably because you all have no friends, so I decided the AI was the next area to focus on : )
     
    Try this one on for size. The AI player will now attempt to rough you up (this is super preliminary and I need to enhance it to defend itself better, judge distances better, and mix up attacks so it's not vulnerable to repetitive jumpkicks), your player may now die in four different ways, and I fixed a couple of branch-out-of-range errors.
     
    Still got problems with dying players rolling the screen and I think the jumpkick is too good for its own good. The sweep is hard to hit with as well.
  3. Hornpipe2
    Updated title screen (new font for digits, highlight-able record and handicap), but not much other progress. The color decode loop is still giving me a headache, plus I seem to have crashed the actual game startup.
     
    If anyone has suggestions on how to make those joystick icons look better I'm all ears. They are 15x13 right now.
  4. Hornpipe2
    Still poking around with this and making pointless optimizations. I finally went to start in on the title screen and make some changes so I can accomodate the new single-player mode, and ended up wanting to cram more options in too. So I've got:
    * a Handicap bar, which initially starts at 0 blips, but can be adjusted left-right to give one or the other player more starting points (2 player only).
    * altered Players option now shows just one or two joysticks depending on your setting.
    * The 'Record' option at the bottom will soon be highlightable if a Savekey is present. Clicking it takes you to the Savekey Screen where you can view the top 8 high scores (no initials - it'll be scores using whatever color the player had) and change the color scheme from NTSC to PAL60 (read off key).
    * Non-Savekeyers will be able to set the initial color state by B/W or COLOR switch at power-on only.
     
    WIP screenshot attached. Hope you like the new font, I found it easier to read despite being shorter. I'll probably change the numbers too.
  5. Hornpipe2
    http://www.richard.hutchinson.dsl.pipex.com/new_page_6.htm
    # 0E 0380 - 03BF Karate Master (Greg Kennedy)
     
    Now to finish it! LOL.
     
    I've got two main branches going on with my code right now and I'm stumped on both ends, which explains the lack of progress.
     

    On the menu front: The biggest issue I am having is that it is hard to justify the ~2k expense on an elaborate menu system if I only have two options on it - "one or two players" and "choose player color". Some more options would be a plus (I'm presently considering things like player handicap, etc) but I have not yet figured out how it would work. Suggestions for more menu options are welcome - as this also helps drive the feature set in the game!
     
    I think overall though I will be replacing some of the font (text) with something smaller and less "flourished" (i.e. more readable), cramming a few more options on the page, etc. Probably will make the "Record" display a highlighable option when the SaveKey is present, and clicking that takes you from a Top 1 to a full-screen Top 16 (3 bytes score + 1 byte color).
     
    I may also see about making use of that System Settings page on the SaveKey. Character heights are as high as I can get them, so PAL folks will be playing with shorter (and slower...?) fighters, but I may be able to make up the difference in lines through a little bit of letterboxing and enlarged background images. But how do I work this around players who don't have the SaveKey? Drat.
     
    On the gameplay front: How in the world am I going to tackle collision detection?! For the frames that are "dangerous" (i.e. should be checked for hits) I've defined a "dangerous point" corresponding to a fist or foot. But now how do I rig up the vulnerable locations on the opponent per-frame? I've considered adding up to three or four hitboxes to be checked, but don't know if that will be enough or not, and the space of that (2 bytes/coord * 2 coords/box * 4 boxes/frame * 42 frames = 672 bytes) what a waste!! This stopped me cold last time and I haven't figured a better solution yet.
     
    Thinking... perhaps I can get a collision handler that is capable of reading the gfx data. Since the info is already there it would be pixel-perfect and probably not so expensive.

  6. Hornpipe2
    Progress has been very slow lately. I set in to work on some AI so I'd have an opponent to test against, but in the meantime the HSC has taught me a valuable lesson, and I am now going to have to re-do the title screen a bit (which I am dreading). That lesson is:
     
    All 2600 games should have a high score counter.
     
    Modern games, it's said, have long since moved past the need to keep track of points. We can have full-on FMV endings, elaborate stories - beating the game can be an end in itself. But this is the VCS, and IT never moved on... and that's the entire appeal right there! I think of the Atari as the ultimate casual gaming machine - nearly every (good) title can be played in five minutes or less, and the best games are those that keep you hitting the RESET button "one more time".
     
    So instead of selecting between Human or Computer Level X, I'm going to change it to Human or Atari. Playing "Atari" will pit you against enemies of ever-increasing difficulty until they kick your face in without mercy. Points scored for hits, bonus points for awesome hits, extra points for defeating an enemy, and mega-bonus-points for flawless victory. The display on the bottom will be a Record for vs. human matches, but will show a six-digit High Score for vs. Atari matches.
     
    Now to rip out my old code and stick in the new. Ugh...
  7. Hornpipe2
    Thanks to all your suggestions, I made a couple of changes:
    * Reduced intensity of all the sprite colors. This should make the flicker far less irritating. Also, I changed up the skin and hair colors of each color. See attached image.
    * Changed the walk animation to move about twice as fast
    * Added the "death" sprites.
    * Changed my bankswitching around a bit to put two subroutines to a bank. Subroutine is chosen by either setting or clearing Carry before banking.
    * Lots of optimizations to the first bank of sprite data.
    * Tiny AtariAge logo added to splash screen.
     
    I managed to find room for a tiny sound effects handler on one of the 4k banks. I don't know if I like the sound much - it's not capable of very complicated noises - but it might be enough to get the job done. I went ahead and put sounds to a few things, like walking, jumping, and the stomach-punch, so I could test them in action. These are (somewhat) temporary.
     
    Also, thanks to the positive feedback from before, I've decided to post binaries to the blog more often.
     
    ETA:
    #1, I have an olive-green player who got the wrong skin tone (and he didn't make the picture, either). He will be fixed.
    #2, the lowkick (down+forward+A) causes your character to fall over backwards and probably roll the screen, oops. : )
    #3, I would like a binary that lets me adjust the AUDC/F/V on the fly to find sounds, does one exist?
  8. Hornpipe2
    All the move and attack animations are in. I still have to do the "death" sprites and animate those, but everything that's rigged to the joystick is now working. Also, there's a little mountain background since I got sick of the old gradient rainbow. This will later become one of several different backgrounds that cycle every match.
     
    As promised in the blog comments, I've attached a binary so players can try out the progress so far. You might want to enable Stella's "Use Phosphor" as it nicely cancels out the 30hz flicker. Try pushing the joystick in all directions, with and without the button. Enjoy, and PLEASE comment if you try it out.
     
    EDIT: A couple of commenters have mentioned the flicker is too irritating, and SpiceWare kindly hacked my binary to make the default player colors less bright. If you get a chance, try out one or two of these alternate versions and let me know which one gives you the best tradeoff of good color vs. headache-free play. I personally like x8_x4...
     
    EDIT2: Note to self - lowkick foot is 1 pixel short, plowkick3 needs kicking foot drawn in, and entire lowkick animation is moving players back 1 pixel.
  9. Hornpipe2
    Drawing more sprites (I think I'm up to 13 now). I added in a quick 'hack' to try turning the character around - it works great. Attached is a quick animation so you can see the effect. Also, I've assigned all the sprites I should need and have a couple to spare, which will be good as either more filler for smoothing animations, or special poses.
     
    I have an idea for the title screen that I like, but I need one of those playfield tools - anyone got a link handy, or will I need to code mine up from scratch?
     
    I had wanted to stick pretty close to IK+ controls for this, but some of those moves don't translate well so I dropped them, and in the process ended up changing the controls to be more intuitive anyway. Generally: move with U/D/L/R/UL/DL, punch with UR/DR/A, turn around with A+(U/D)L, kick with A+U,A+UR,A+R,A+DR,A+DL. It's a kicking game now I guess...
     
    Some people (okay one person, vdub_bobby haha) are asking for a binary. I have a thing about releasing anything but screenshots until it's ready for public testing. Don't worry - betas and final release will be made available, with source. I just don't feel like posting a ZIP yet with all kinds of caveats ("the only button that works currently is P0 right. Oh and don't push it too much or the game loops infinitely.")
     
    EDIT: Note to self - do something about the belt on that rotation.
  10. Hornpipe2
    New changes:
    * Invested a little more time on the Title Screen. Now instead of Atari Rainbow it's blue with gradients at top and bottom. I've actually sectioned off areas in the center for menu items (to be displayed with 6-digit-score-routine) but they don't do anything now except draw more blue.
    * Dropped in the Music Kit 2.0 on the title screen. It plays the demo song, which makes everything 1000 times cooler.
    * Worked a little more on the battle screen. There's now a score display at the top, players at differing heights, and a little more graphics at the bottom. Sometime soon I'll get a nice background going.
    * Up to 3 sprites now - stand, walk, and crouch.
     
    For reference I added a couple ROM counters to my .asm to check my usage:
    ---- $93c bank0 program ROM free
    ---- $d2d bank1 t/menu ROM free
     
    Looking good so far!
  11. Hornpipe2
    Progress continues slowly. I wrote up a little C application to take BMP files and spit out assembler BYTE codes, so I can draw sprites in MSPaint and not have to punch in hex codes by hand. The colors are off and I end up fixing them manually, but it seems to work okay for the actual pixel on/off data.
     
    Here's the current build showing my fighters standing ready. They're 40 pixels wide, and 21 lines tall shown 3 times each, for an effective 40x63 sprite. New animation frames will probably come next, as well as dynamically building the sprite color table in RAM each frame so I can have two differently colored players. That way I can store sprite colors in a special format as there are only 4 colors used (uniform1, uniform2, skin, hair) and that means 2 ROM bits instead of 8 - I would then unpack it to 8-bit colors before starting the frame.
     
    Maybe I'll even let players pick the uniform color in the final version - we'll see.
  12. Hornpipe2
    I've seen a few people post about wanting to attempt a 2600 fighting game, but the only BINs to surface (that I've found) are a few demos of Andrew Davie's Fu Kung! and a 'Kung Fu Sprite Demo 2'.
     
    Well, I'm officially throwing my hat into the ring on this. I'm working on a 16k fighting game, quite similar to the classic International Karate, for one or two players. So far I've modified the bigmove source and instead of a 48-pixel sprite, I'm going with a 40-pixel multicolor one. Hopefully the fighters will still be large enough and colorful to boot.
     
    As soon as I can figure out a 16k bankswitch template I'll put that in. I'm thinking 4k for game, playfield and sound effects, 4k for title screen, music and settings, and 8k for player sprite data. Expect more soon.
     
    Many thanks to Cybergoth for helping me get this far with his quite handy code from Seawolf (an excellent piece of homebrew in itself if you ask me...)
  13. Hornpipe2
    Pixel-perfect collision detection should be working now. Since it's now possible to knock opponents around, please try out the attached binary (with friends if you've got 'em) and give feedback on initial move balance. Are some moves overpowered? Is it too hard to hit with others?
     
    Three things to note real quick -
    * the middle kick will be adjusted up or down 1 pixel - right now it's too hard to hit with since the foot goes into the opponent's belt
    * blocking does nothing yet
    * knocking players over rolls the screen : )
     
    ETA: controls straight from the top of the source, assuming your player is facing to the right:
    ;<none> stand
    ;U jump
    ;D crouch
    ;L walk back
    ;R walk forward
    ;UL jump back
    ;DL block
    ;A+L turn
     
    ;UR face punch
    ;A stomach punch
    ;DR crouch punch
     
    ;A+U jump-kick
    ;A+UR face kick
    ;A+R stomach kick
    ;A+DR shin kick
    ;A+D crouch kick
  14. Hornpipe2
    Banging out some collision detection. Right now I can tell if the danger point (one pixel X/Y location where hits are checked) is within the 40 x (sprite height) area of an enemy. Next I'll need to write a small 'more precise' function to put on both banks with image data - this will check if the dangerous pixel does or does not collide with real image data.
     
    Ignore the ugly colors below, that was part of my WIP color-decode.
  15. Hornpipe2
    I'm pretty happy with the title screen now, everything's working except there's no Savekey-specific stuff. That's okay, I left 1360+ bytes free on this bank, so there should be lots of room for that later. The Handicap is a fun setting, you adjust the bar left/right to give one or the other player more starting points and help balance the fight.
     
    Note that I've done away with 2 player 'match scoring' at the bottom. I was keeping a record of wins, but I decided it wasn't worthwhile. Now you always see your top single player high score instead.
     
    Next I'm supposed to re-write a section of the color decoding for players, but I am getting a little bored with pointless optimization, so I'll probably start working on collision detection and see if I can't make a playable game out of this.
  16. Hornpipe2
    All the basic movement (non-attack) animations are done and working. Players can independently shuffle around, crouch, leap straight up or back, and block. Also they can turn around, after which the L/R controls are swapped.
     
    I will next be doing all the attacks.
     
    EDIT: Now they can jumpkick, sweep, stomach-punch and face-punch.
  17. Hornpipe2
    My design for the movement and joystick tables finally got implemented today, which is good news, because it makes adding sprites and defining animations dead simple. I draw the 40xN image in Paint, run it through my converter, and paste the ASM code into a free block. Then I add new information to a few tables, and the image is ready for use.
     
    Basically what I've set up here is a series of animations, and the joystick state just chooses which one will be played whenever your player is in the standing position. Combined with an X/Y movement table, I can make my guys walk and hop around the playing field. It's pretty awesome. I haven't loaded up all the animations yet, but so far they can block, turn around, and walk. (They can jump too but the sprites aren't present so they just levitate for now). Oh, both players are working too.
     
    Next step is defining all the rest of the animations, drawing the remaining sprites, and then marking hitboxes and damaging points for each sprite. Lots of ROM space left too, which means features like AI, multiple playfields, and sound effects will fit in easily.
  18. Hornpipe2
    Here's the finished title screen. I got all the controls working and spent a couple hours optimizing as much as I could think of. The result is that all that you see here, plus splash screen and music, fits into one 4k bank with 1451 bytes to spare. I'm very pleased with the result.
     
    The only thing left to do here is compose my own title screen music, and of course write the rest of the game : )
  19. Hornpipe2
    In between drawing sprites I've been working on my title screen (really, game menu). Here's what I have so far - changes will be made, though. This is mainly just a mockup - no controls do anything yet - but the GFX pieces are almost all in place.
     
    * Splash screen displays for about 5 seconds on power-on. It's just the word 'Karate' in Japanese and does a cheap rainbow flashing. Then the menu pops up.
     
    * Enemy can be one of "human" to "c", "c-", "c--" etc. (AI difficulty level)
    * Color will be selected to allow both players to change their uniform
    * FIGHT! starts a game
    * Record shows matches won for each player. Reset button to revert to 0-0.
     
    Still plugging away at character graphics.
  20. Hornpipe2
    New changes:
    * Colors are now 'packed' 4 to a byte in a bizarre format, and unpacked during front-porch into 24 RAM bytes. This saves me a lot of ROM space. Bumped up max sprite height from 21 to 24 lines, and added two alternating player colors. (Incidentally the PAL60 version will feature blue-haired ninjas...)
    * Everything is now table-driven - no hardcoded values - so I can feel free to draw sprites of any height and run them through my bmp2h program, and they should Just Work.
    * Animations! My animation setup is going well enough to allow Player 0 to engage the 'walk' sprite when pressing Right on the joystick. I took a screenshot of that in action, but it's hard to tell since they look very similar.
     
    Next up I need a lot more sprites and to define some more moves, plus allowing animations to change Player X and Y values.
  21. Hornpipe2
    I came up with a little 16k bankswitch template (posted over in 2600 Programming forum) that I have now copied all my original code into. It's working great - I put a dummy 'Atari Rainbow' title screen that then skips to the main game when you hit the Reset button, and my sprite drawing routine has been shuffled off into banks 2 and 3.
     
    No screenshots though as it looks exactly like it used to - but that's a good thing!
×
×
  • Create New...