[4.5.6] Rad Rabbit's Bad Hare Day - (WIP)


Active member
This is still WIP but I'd be interested to know if you like it or not or prefer my first attempt months ago (first post on this thread).

I like the borders on the solid surfaces in this version, it gives the scenery a nice flow.


Well-known member
awesome! Love your style, Jonny.
Thank you, I really enjoy experimenting with pixel art.

I really need to spend more time on code now because I must be overflowing a bank or something. Something really strange is happening. It took me ages to figure it out...
If my player speed is just 1 over 31 my scroll breaks, it carries on going after button is released! So wierd for something so small to break the game. Time to read up on banks.


Well-known member
Change HUD from floating sprites to full strip... (still working on the design)

Padded out the health by altering the DrawSpriteHud.asm macro.
Centre part will be picked up items (square using 4 sprites).
Looks a bit bare but those pesky limitations! 8 sprites per scanline.

For bosses which will be on single static screens, I'll change the layout and add an image of the boss or their name in background tiles.

NEW HUD2.gif

Now I just have to re-design all the lower parts of my levels to suit new HUD. Happy I made the change though because the most important part (the time) stands out a lot better for the player.


Well-known member
Sorry for not getting back to you for so long! I didn't notice your reply until dale_coop nudged me. :)

The arg0_hold .. arg3_hold variables are for passing the four passcode digits to the doPasscodeLookup subroutine.

After the subroutine, if the passcode was a match, the carry will be clear (thus BCC +success in the test script), and the level that was matched is set in the X register, so you would access it like this.

JSR doPasscodeLookup
BCC +success

STA someVariable

After you have the level number in a variable you'll need to use that variable to figue which screen ID to set warpToScreen to.

I've started implementing your code properly to do the warps. For the most part a success but there's just one part I'm missing...

So I've done an end action to do the actual warp, so in my input script for 'press start' I've got this...

;;; PASSCODE CORRECT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    STA passcodeWarp
    ChangeActionStep #$01, #$04

The action step then uses this timerEndScript...


    LDY passcodeWarp         ;;;  ((( someVariable ))) ;;;
    LDA passcodeWarpTable,y
    STA temp
    WarpToScreen warpToMap, temp, #$01

With a table for 22 warp locations (current values for testing)...

    .db #$00, #$01, #$02, #$03, #$04, #$05, #$06, #$07, #$08, #$09, #$10, #$00, #$10, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00, #$00

So the passcode warp works fine, using the passcodeWarpTable but for some reason im getting back the fourth table number, then the 8th then the 12th. Adding 4 everytime. Do you know where I've gone wrong?


Active member
Reminder that hexadecimal is 0-9,A-F.
You can omit the dollar sign (e.g. #10) to use decimal numbers instead.
As for the table, the only explanation I can think of is that the value of passcodeWarp is being overwritten somehow.
Also, please use STX instead of the TXA STA shenanigans. I know Joe loves to do it but that doesn't mean it's a good idea to copy everything he does.


Well-known member
I realized after posting about hex values someone might pick up on that but didn't bother changing it as it was just to see which screen would load for testing. Forgive my ignorance, so STX stores in exactly the same way/place? I thought one stored to accumulator and STX to X? So confused. They're the same thing essentially? I'll try to remember this going forward.

Yes that's what I was thinking. Seems to be adding the same value 4 times so the second one becomes 8, the third 12 etc. I'll keep trying things, kinda baffled at the moment. Could be the way I've got the timerEndScript setup and monster action settings. Could be running code 4 times as my screen transition effect runs. I'll do some trial and error.


Well-known member

Did you ever do the circle trajectory you spoke about a long time ago? I'm thinking about using a similar method only with V and H movement. Just wondered how you did your circle in the end, with lookup tables or another way?



Staff member
I haven't tried after that. I ended using another trajectory monsters.
But yeah, something could be done, now.... maybe


Well-known member
Current To-do list. Trying to be a bit more focused! I'll post a game update when all this is done and monsters are implemented. i.e when it's an actual game lol.

Mechanics / Engine

Sound bank switching (1A / 1B)
Fix hook grab (game breaking bug)
Weapon object (synced to player)
Player projectiles (with bullet limit)
Duck collision / projectile changes
Player hurt handling (invincible delay)
Moving / breaking platforms
Passcode system (not warping yet)
Time running out warning thing
Removing pickups solution
Player death sequence (BG fade etc)
Jump (w/ up frame and down frame)
Text (sentence delay / garble SFX?)


Starting to do some work on monsters movements / spawing. All the graphics are as far completed as they can be before I see them in the game. This is my ghost sine wave guy... (might be making him a little bigger)

View attachment 5110
This monster movements look amazing! A love the the background and colors there too <3
Can i ask you how do yo do to get this kind of sine monster moves?
Top Bottom