Oink 'n' Boink - 2 Player Battle Game

dale_coop

Moderator
Staff member
Oh wow! Awesome work JamesNES (y):coffee:

It makes me realize that we need a simple vertical only scrolling module (for vertical shooter or racing or a small Doodle Jump or a Downwell or... )
 

SciNEStist

Well-known member
agreed. a lot of the game ideas I have in the back of my head would work much better vertically.

wow JamesNES! you didnt have to go through the trouble of animating the finish line tape, but you did! *chef's kiss*
 

JamesNES

Well-known member
Thanks! There's so much space on these carts it feels almost obligatory to put heaps of superfluous stuff in haha.

The thing that would stop me trying to make a module of it is I never got my head around doing it with nes maker's standard collision system. For this I turned tile collisions right off, which freed up 512 bytes of ram I used for my own collision system, and stuff like mirroring the whole attribute table to make it easier. With the attribute updating it was so hard to debug, you basically have to get it close to perfect on the first go or start again. This was like my fourth try in the last few months!

The drawing stuff I could try and share here but collisions would be a per project thing. Since this skiing doesn't have platforms to stand on it's pretty simple to just make basic 4 byte objects with their own little scripts when the play hits them. Especially with all that free ram. This handles 40 objects on screen at a time you can collide with, spawned in by the nes maker generated collision data. Since there's not much going on apart from the drawing every 8 pixels, there's heaps of time to check collisions.
 

dale_coop

Moderator
Staff member
Why should custom NESmaker modules be required to support Nesmaker's built-in collision data? :unsure:
Even the default modules that come with NESmaker don't support a lot of things that the tool handle (all the day/night system for example... or even the "edge/random spawn monsters"... etc some modules don't support gravity... or vertical movements... etc)

If you release a basic module, just handling vertical scrolling with a basic object collision system. That would be enough to make a ton of fun projects.
 

JamesNES

Well-known member
Good point! That sounds like fun actually, I've never made a module before. It'd be neat to see people make some vertical scrolling stuff.

After my Byte-Off project goes down in flames anyway!
 

dale_coop

Moderator
Staff member
Yes, it's fun. I did that after the first byte off, I made and shared my 2 player module for nesmaker 4.1. It was fun experience, and not a waste as a few members used it.
 

JamesNES

Well-known member
Didn't really know what to do after I decided I couldn't make my byte off demo into a full game that was actually good enough, been messing around with a few things but I realised I probably had the most fun making this one. With a year's more experience under my belt I'm gonna reboot, and make it in a more modular and sensible way, with some of the same concepts.

Until then though, here's how far I got with this version, bugs n all. There's still some interesting stuff in there and it mostly works.
 

Attachments

  • onb demo 2.zip
    82.3 KB · Views: 11

TalkingCat

Member
Я действительно не знал, что делать после того, как решил, что не смогу превратить свою демо-версию в полноценную игру, которая на самом деле была достаточно хороша, возился с несколькими вещами, но я понял, что, вероятно, получил больше всего удовольствия от создания этой игры. Имея за плечами еще год опыта, я собираюсь перезагрузиться и сделать его более модульным и разумным, с некоторыми из тех же концепций.

А пока, вот как далеко я продвинулся с этой версией, все ошибки. Там есть еще кое-что интересное, и в основном это работает.
Спасибо Джеймс. Очень забавная игра. Я наслаждался игрой. Я встретил несколько ошибок. Счет игроков корректно отображается только до 9. После этого вместо чисел идут графические плитки. А также при игре в снежки, если я попал снежком в соперника, ему зачисляется очко, это так и было задумано?
 

JamesNES

Well-known member
Ball? Thought I took that out.

Also should've mentioned that all the weird stuff is timed for PAL only.
 

JamesNES

Well-known member
I've been slowly hacking away at things, having a lot of fun.

I came up with a method of keeping games completely distinct, so I can do whatever and not worry about it conflicting with something else and bringing the whole thing down. I always find that to be a problem. This way everything has its own inputs, pre/main/post routines, NMIs.

I started with sprucing up my favourite one, the tug o war game. It's got some cool scrolling clouds and the waves down the bottom use a trick to make it look like 8 frames of CHR animation.

newtugowar.gif

I got my screen splits to actually be accurate to 1/3 of a scanline instead of a third of a screen so this looks a lot better.

Then an idea I couldn't really pull off last year, a split screen hurdling/racing game:





Needs a few more obstacle types, but eventually you escape the cave and win. Want to add some items to get to mess with the other player but haven't thought of anything good enough yet. It does have a nifty parallax effect though!


Now I'm doing a split screen top down sort of thing, originally it was going to be just a scavenger hunt then I realised it was basically Spy vs Spy so I'm currently thinking of things to make it more interesting. After I made this much I went and looked at NES Spy vs Spy and was quite shocked, they did it terribly. I was used to the smooth as butter SMS version.

vs.gif


Also made a map screen, not much to see here but I like how smoothly the textbox shows up.

map.gif
 

dale_coop

Moderator
Staff member
Wow!
Of course, we would be very happy (and grateful) to learn how to achieve the split screen.
Additionally, I'm personally highly interested in the smooth text box as well! o_O
 

JamesNES

Well-known member
To get a stable timed split you just have to make sure that all the code from the start of the frame to the split runs the same every time, so no comparisons or branching and that sort of thing. So the split has to go before at least the object handling and the input script handling. I also found that GG sound was overrunning NMI when the song went to a new frame so I moved that out of there on screens with a split, and put it at the end of the main game loop.

So then this happens at basically the start of the frame in the tug o war stage:

Code:
    ;;set the x scroll of the clouds
    LDA xScrollOffset
    STA $2005
    LDA #$00 ;;y scroll
    STA $2005
    
    
    ;;waste some time so the PPU gets down below the clouds
    LDA #$06
    STA temp
    LDX #$C0 
    -
        DEX
        BNE -
    LDX #$FF 
    DEC temp 
    BNE -


    ;;Set the scroll back to zero for the ocean part
    LDA #$00
    STA $2005
    STA $2005

The more of these you do the less time you have for things like logic though so it's good for cutscenes and simple games like mine.

The text is quick because it draws the blank text boxes on the right hand nametable, then uses sprite zero to quickly switch to them at the right moment! Sprite zero moves depending on which half of the screen the player is in. The text for each stage is drawn when the player is on the map node leading up to the stage. This picture might help? Attached a rom too if you want to look.

text.gif

I'm wanting to do some single player minigame stuff but every time I try, I just think it'd be more fun in two player!
 

Attachments

  • game.zip
    38.1 KB · Views: 7
Top Bottom