Binary Land

developing/porting a new game or gaming framework? post in here!
Post Reply
Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Binary Land

Post by Naomasa298 » Wed Jun 24, 2020 10:43 am

I really do want to get into arcade game programming. The closest I ever got was a "game" I called Space Observers - like space invaders, except the aliens just moved across the screen, they didn't move further down or fire...

A game I played a bit as a kid was Binary Land. For those of you unfamiliar with it, here's a video:
https://www.youtube.com/watch?v=0GQM8KBIN_8

It's called binary land because you control both penguins (Gurin, the green male penguin and Malon simultaneously. They move horizontally in opposite directions. The object is to navigate the two love-birds (see what I did there?) to the heart simultaneously. They can get caught in the webs or trapped by spiders. They can also shoot a ray that gets rid of both. The game ends if both penguins are trapped.

If you navigate them so that they touch each other enough times in a short period (ahem), they produce a baby penguin that runs around killing spiders and eliminating webs.

In later levels there are flames which can't be eliminated by your penguin-ray and a bird flying around (which I'm not sure what it does, I never played it that far).

It should be an easy enough conversion - there very little sprite masking, so not a lot of saving/restoring of backgrounds needed. But of course, I've never done this before, so there is much to learn.

I'll be working on this in between breaks from my RPG - although that is my main focus. Things have also become busier at work, so I anticipate progress on the former to be slower, and on this to be slow.

User avatar
Arcadian
Site Admin
Posts: 3340
Joined: Fri Nov 24, 2000 12:16 pm
Contact:

Re: Binary Land

Post by Arcadian » Wed Jun 24, 2020 12:25 pm

Ah, I actually have this for my Famicom & Famicom Twin. I bought a lot of 100+ Famicom carts a couple of years back, and it included three different Hudson games all with the penguins in I think. There was a platformer (that two of my friends well got into and spent an evening completing) whilst I tried Binary Land but found the control mechanism really confusing and didn't give it the time of day!! I must give it another whirl now you're looking at doing a BEEB version! :)

Oh, and I promised you I'd share the [very rough] concept I did in the early hours didn't I?!

Well, I started doing a cover with a screenshot on the front (like the Pooyan one) but I was struggling to find any kind of 'blurb' at all to use for the copy on the back cover (it was only released for Nintendo in Japan on the Famicom it would seem).

Then I came across someone selling 'fan repro' NES boxes/carts on eBay (which featured the Famicom game dumped onto a NES cart) and these /did/ have some English instructions on the back:

NES_BinaryLand_3.jpg

NES_BinaryLand_1.jpg


But then it gave me an idea for a NES-inspired, BBC inlay ... :idea:

NES-ActionSeries_BinaryLand_RoughMockup2_50pc.png

What do you think? (I do stress, it's a /very/ rough concept!!) but I hope you at least appreciate the authentic 'FDS' font used for 'DISK SYSTEM' ! :D


And just in case they're of interest, these are higher res versions of the screenshots I mocked up based on the Famicom version ...

BinaryLand_NES_Colourswap_5colours_Mode1_768x660.png
BinaryLand_NES_Scr2_Colourswap_5colours_Mode1_768x660.png

They feature three fixed colours (blue, red, white), a variable fourth colour (e.g. cyan, yellow etc) plus a fifth colour (green) for the second penguin, which could hopefully be achieved via an interrupt (Tricky if you're reading, does it look as if this might be possible?).
For a "Complete BBC Games Archive" visit www.bbcmicro.co.uk

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Wed Jun 24, 2020 1:36 pm

Very cool Dave! I love the retro Famicom look! And especially the Acorn Nintendo style logo.

I'm thinking of doing it in MODE2. It's such a simple game that there should be enough space. Or I'll do it a shadow mode and reduce it down later.

The level data is what is going to take the most room, IIRC, it had 99 levels.

BTW - if you need Japanese text translated, give me a scan and I can give it a go, if the kanji isn't too complicated.

Does anyone recognise the music?
Last edited by Naomasa298 on Wed Jun 24, 2020 4:17 pm, edited 2 times in total.

User avatar
Arcadian
Site Admin
Posts: 3340
Joined: Fri Nov 24, 2000 12:16 pm
Contact:

Re: Binary Land

Post by Arcadian » Wed Jun 24, 2020 2:20 pm

Naomasa298 wrote:
Wed Jun 24, 2020 1:36 pm
Does anyone recognise the music?
Je Te Veux - French waltz by Erik Satie.
For a "Complete BBC Games Archive" visit www.bbcmicro.co.uk

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Wed Jun 24, 2020 2:27 pm

Arcadian wrote:
Wed Jun 24, 2020 2:20 pm
Je Te Veux - French waltz by Erik Satie.
Appropriate!

User avatar
Snuggsy187
Posts: 85
Joined: Wed Apr 03, 2019 9:53 pm
Contact:

Re: Binary Land

Post by Snuggsy187 » Wed Jun 24, 2020 11:18 pm

Excellent choice ! :D
I like the way you control 2 penguins around the screen at the same time !

Hope it all goes to plan for when you need a break from Legend ! :D
PUSH PARCHMENT > POKE LOCK > PULL PARCHMENT

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Wed Jun 24, 2020 11:34 pm

Re interrupts for changing the second penguin's colour - I don't know if that'd be possible. You'd need to change the palette twice every scan line, the position varying depending on where the sprite is.

I'm sure some clever clogs could do that but not me!

User avatar
tricky
Posts: 4361
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Binary Land

Post by tricky » Thu Jun 25, 2020 7:45 am

As Naomasa298 says, you would have to change the palette mid-scanline, which might require loosing a few more cycles for a "NOP slide". If you use T1 continuous + no-interlace, you wouldn't need a NOP slide, just sync up as close as possible to vsync at startup (take about 30 bytes and up to 3 frames).
This would be workable if you chose two colours that were "flashing" opposites as you only need one write to swap all the flashing colours between there first and second colours.

Code: Select all

White <-> Black  
Cyan <-> Red     
Magenta <-> Green
Blue <-> Yellow  
If you run with interlace off (looks better anyway in my opinion) you could use UserVia T1 in continuous mode and set it for where the bird on the right is, if you don't know at vsync/previous frame, you could just set it a couple of lines early. I would then cycle count a loop to swap colours, wait half a line, swap back, wait half a line, repeat until after second bird has been displayed return from interrupt. I think this has 7 bytes of jitter and the central wall is 8 bytes! Things would get messy when they were "bumping".

99 levels * 15 wide * 20 high, would be < 2KB if it were just the walls and <4KB for ground+walls+two other things, you could event encode them so that the first bit says use one bit per tile or use 2 bits per tile (4 bytes per row). if there is always a wall down the middle, that would give another spare bit to allow encoding to be different left and right.

If you do use MODE 2, you have all the colours and could even use 3 forground + 4 background colours to not have to mask FG/BG.
I don't think that you need to save the background, as it is always solid colour. You could EOR or ORA the sprites on and just blank them off.
If it was me, I would use MODE 1 (cos I useually do) to get better resolution, or if it isn't needed, MODE 5 to halve the memory and halve the bytes per sprite. To make it work in 4 colours, I would have red penguin with white belly and a white penguin with red belly etc as they are kind of opposites.

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Thu Jun 25, 2020 10:36 am

tricky wrote:
Thu Jun 25, 2020 7:45 am
As Naomasa298 says, you would have to change the palette mid-scanline, which might require loosing a few more cycles for a "NOP slide". If you use T1 continuous + no-interlace, you wouldn't need a NOP slide, just sync up as close as possible to vsync at startup (take about 30 bytes and up to 3 frames).
This would be workable if you chose two colours that were "flashing" opposites as you only need one write to swap all the flashing colours between there first and second colours.

Code: Select all

White <-> Black  
Cyan <-> Red     
Magenta <-> Green
Blue <-> Yellow  
If you run with interlace off (looks better anyway in my opinion) you could use UserVia T1 in continuous mode and set it for where the bird on the right is, if you don't know at vsync/previous frame, you could just set it a couple of lines early. I would then cycle count a loop to swap colours, wait half a line, swap back, wait half a line, repeat until after second bird has been displayed return from interrupt. I think this has 7 bytes of jitter and the central wall is 8 bytes! Things would get messy when they were "bumping".
Yep, just as I thought. I didn't understand any of that. :)
99 levels * 15 wide * 20 high, would be < 2KB if it were just the walls and <4KB for ground+walls+two other things, you could event encode them so that the first bit says use one bit per tile or use 2 bits per tile (4 bytes per row). if there is always a wall down the middle, that would give another spare bit to allow encoding to be different left and right.
It's walls and webs, plus "secret" tiles, so 2 bits per tile should work. I'm thinking the level data could be packed and unpacked as necessary. They should crunch down nicely.
If you do use MODE 2, you have all the colours and could even use 3 forground + 4 background colours to not have to mask FG/BG.
I don't think that you need to save the background, as it is always solid colour. You could EOR or ORA the sprites on and just blank them off.
If it was me, I would use MODE 1 (cos I useually do) to get better resolution, or if it isn't needed, MODE 5 to halve the memory and halve the bytes per sprite. To make it work in 4 colours, I would have red penguin with white belly and a white penguin with red belly etc as they are kind of opposites.
The Famicom's resolution was 256x240, so sort of halfway between mode 1 and 2. I tend to favour colour over resolution.

There are some instances of the sprites moving over one another, but that could easily be done with an EOR. That'd be acceptable. Alternatively, since there are comparatively few moving sprites, I'm thinking maybe mask them, and when moving, simply clear the row/column they're moving from and replot. Saves blanking the whole sprite.

I think the whole game only has 5 static sprites and 6 animated sprites!

RobC
Posts: 2902
Joined: Sat Sep 01, 2007 10:41 pm
Contact:

Re: Binary Land

Post by RobC » Thu Jun 25, 2020 6:50 pm

tricky wrote:
Thu Jun 25, 2020 7:45 am
As Naomasa298 says, you would have to change the palette mid-scanline, which might require loosing a few more cycles for a "NOP slide". If you use T1 continuous + no-interlace, you wouldn't need a NOP slide, just sync up as close as possible to vsync at startup (take about 30 bytes and up to 3 frames).
This would be workable if you chose two colours that were "flashing" opposites as you only need one write to swap all the flashing colours between there first and second colours.
This might be completely mad but, given that the penguins are magenta and green, would it be possible to use the cursor to invert a rectangular block over one of the penguins? You'd then plot white when you wanted black and black when you want white. You could have yellow and blue beaks etc.

I think you'd need an interrupt set up for a few rows to update the cursor position and height but does it sound doable? I know RichTW did something similar in Blurp to get 5 colours on a row but I think that was static...

User avatar
tricky
Posts: 4361
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Binary Land

Post by tricky » Mon Jun 29, 2020 4:43 pm

Can the cursor go 4 (5?) bytes wide? You would have to move it every 8 lines, and it will invert everything, so, I think you would need more colours, unless you have two colours that are swappable with each other and two that aren't that would be swapped between penguins.
You would have to choose two colours from one line and two penguin colours from two other lines:

Code: Select all

White <-> Black  
Cyan <-> Red     
Magenta <-> Green
Blue <-> Yellow
Either way, you can write the game using 4 colours and decide later.
MODE 1 can easily be made 256x240 and will only need 15KB instead of 20KB.
It would look more like a genuine arcade game then with the "proper" resolution.
Try converting the graphics to MODE 2, they might just be OK as they look 16x16, but they might be a bit too blocky.

PS Don't worry about understanding my gibberings, I can make a sample that does it when you are ready to integrate if you want.

RobC
Posts: 2902
Joined: Sat Sep 01, 2007 10:41 pm
Contact:

Re: Binary Land

Post by RobC » Mon Jun 29, 2020 5:34 pm

tricky wrote:
Mon Jun 29, 2020 4:43 pm
Can the cursor go 4 (5?) bytes wide? You would have to move it every 8 lines, and it will invert everything, so, I think you would need more colours, unless you have two colours that are swappable with each other and two that aren't that would be swapped between penguins.
You would have to choose two colours from one line and two penguin colours from two other lines:

Code: Select all

White <-> Black  
Cyan <-> Red     
Magenta <-> Green
Blue <-> Yellow
Either way, you can write the game using 4 colours and decide later.
It's probably a mad idea but I think the cursor can go to 16 pixels/4 bytes wide in mode 1 - you just need put &F8 in the Video ULA control register at &FE20. Its screen address can be moved horizontally in increments of 8 so 4 pixels in mode 1. For vertical movement you can adjust its start and end scan line in the 6845 so potentially single pixel increments.

What I don't know is whether you can change its position mid-frame with an interrupt to extend its height to more than 8 scanlines (and to handle vertical movement across row boundaries) as I haven't tried it yet. I suspect it is possible though even if you have to use vertical rupture to achieve it. (Somewhere I have some HD6345 chips which are backwards compatible with the 6845 but support two cursors along with other extended features.)

My idea was to have a black background, use white and cyan for the blocks and magenta and white for the first penguin. You'd could then use green, white and red for the second penguin etc.

User avatar
Snuggsy187
Posts: 85
Joined: Wed Apr 03, 2019 9:53 pm
Contact:

Re: Binary Land

Post by Snuggsy187 » Mon Jun 29, 2020 6:52 pm

tricky wrote:
MODE 1 can easily be made 256x240 and will only need 15KB instead of 20KB.
It would look more like a genuine arcade game then with the "proper" resolution.
Try converting the graphics to MODE 2, they might just be OK as they look 16x16, but they might be a bit too blocky.
I tried MODE 2 with Pooyan initially, but the sprites turned out too fat. Would have had to redesign the entire sprite set ! Went for MODE 1 instead and reduced the display width, saving 6K. The sprites are still a bit fat when comparing with the arcade version - I guess arcade pixel dimensions are slightly taller ? Or perhaps MAME stretches things.....?
PUSH PARCHMENT > POKE LOCK > PULL PARCHMENT

User avatar
tricky
Posts: 4361
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Binary Land

Post by tricky » Tue Jun 30, 2020 1:03 pm

MAME has many stretching options ;)
Beeb pixels aren't square on a CRT, but usually are in an emulator, so that might be it.
The arcade version would have had the monitor vertical, which probably means a different pixel aspect ratio again.

User avatar
Iapetus
Posts: 39
Joined: Wed Feb 12, 2014 1:08 pm
Contact:

Re: Binary Land

Post by Iapetus » Tue Jun 30, 2020 9:30 pm

This a cool game! Great mock up screens. =D>

Following this thread with interest to see how you will implement it. :)

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Tue Jun 30, 2020 10:41 pm

Slightly miffed to find this thread's getting more attention than my RPG game. :)

Here's a first attempt screenshot. MODE2, 160x256. Except that I screwed up and made the tiles 10x24 instead of 10x20, so I'll have to redraw them all. :D

It's obviously going to be a port rather than a straight conversion (or is that the other way around?). What do you think?
screenshot.png
screenshot.png (6.87 KiB) Viewed 293 times

RobC
Posts: 2902
Joined: Sat Sep 01, 2007 10:41 pm
Contact:

Re: Binary Land

Post by RobC » Tue Jun 30, 2020 11:11 pm

Looks good. I think I prefer it to the mode 1/four colour version, particularly if you can still do the score area in mode 1.

User avatar
tricky
Posts: 4361
Joined: Tue Jun 21, 2011 9:25 am
Contact:

Re: Binary Land

Post by tricky » Wed Jul 01, 2020 7:33 am

Some people just like solving a problem, wether that is rendering speed in your RPG or getting more colours here :)
Usually, I prefer MODE 1, but here it looks cute. I think it helps that the sprites aren't double width and that it now fills the screen.

drfloyd
Posts: 287
Joined: Tue Jun 09, 2020 3:36 pm
Contact:

Re: Binary Land

Post by drfloyd » Thu Jul 02, 2020 10:50 pm

I can see 5 colours on Mode 1 screens ? No ?

Naomasa298
Posts: 355
Joined: Sat Feb 16, 2013 12:49 pm
Contact:

Re: Binary Land

Post by Naomasa298 » Thu Jul 02, 2020 11:13 pm

drfloyd wrote:
Thu Jul 02, 2020 10:50 pm
I can see 5 colours on Mode 1 screens ? No ?
We were discussing using a programming "trick" to get 5 colours.

Post Reply

Return to “new projects in development: games”