What was your first game made?

Eeeeeeeewwwww! :dizzy_face:

Good job though… I can’t imagine doing a whole game (even a “simple” one) in assembler.

1 Like

Me neither!!!

The teacher was this kind of person that says: “a routine in assembler will run faster than one compiled from c…”

And I follow his advice and now I’m doing my games happily with jMonkey and Java :smile:

4 Likes

Ick. Sure, it might run faster, if you can outdo a C compiler’s optimizer… but you’ll have aged 10 years and given yourself heart failure in the process. :stuck_out_tongue_closed_eyes:

1 Like

I remember coding a game in basic with my dad. It was a water drop, randomly dropping on mushrooms pyramid and you had to be fast enough to catch the drop with a glass…
I had more fun developing it than playing it…
All graphics were Ascii graphics :stuck_out_tongue:

3 Likes

I tried doing an ASM game for my 8 bit game console, it did not work out so well :sweat_smile:

1 Like

Yeah!! A program with several goto: PUSH and POP and your mind blow up!!! :dizzy_face:

2 Likes

Upload them to the assests store!!! :grin:

1 Like

Here is what I remember
the Drop :

o

the glass :

U
Y

(though the line spacing was smaller)
the mushroom:

☻
║
╩

(Thought the head char wasn’t exactly looking like this at the time…)

1 Like

Nice assets!!!

1 Like

A true jedi Yoda ASM must use.

EAX, EBX mov
ECX mul

1 Like

My unfinished BIOS for my game console written entirely in Z80 assembly:

;initialize stack
0000 LD SP,0x80FF
LD A,0xFF
LD (0xF000),A

;setup initial IRQ handler in RAM (RETN)
LD A,0xED
LD (0xB590),A
LD A,0x45
LD (0xB591),A

;initialize color palette with four colors
LD A,0xE0 ;red in slot 0
LD (0xB580),A
LD A,0x1C ;green
LD (0xB581),A
LD A,0x03 ;blue
LD (0xB582),A
LD A,0xAB ;purple-ish
LD (0xB583),A

;copy start tile data to VRAM space
LD IX,TILE
LD IY,0x9580
LD HL,128
CALL MEMCOPY

;jump out of interupt region
JP Start

;Video Frame IRQ
0067 LD A,(0xF000)
CP 0xFF
JP Z,IRQ
LD A,(0xDA21);check to see if IRQ is enabled
CP 0xFF
JP Z,0xB590;jump to IRQ in RAM if IRQ is enabled, else
;go back to previous code
RETN
IRQ:


Start:
;write data to sprite data space
LD A,0xAA
LD (0x9300),A
LD A,0x40
LD (0x9301),A
LD A,0x08
LD (0x9302),A
LD A,0x00
LD (0x9303),A

LD A,0xAA
LD (0x9304),A
LD A,0x40
LD (0x9305),A
LD A,0x64
LD (0x9306),A
LD A,0x01
LD (0x9307),A

LD A,0xAA
LD (0x9308),A
LD A,0x64
LD (0x9309),A
LD A,0x08
LD (0x930A),A
LD A,0x02
LD (0x930B),A

LD A,0xAA
LD (0x930C),A
LD A,0x64
LD (0x930D),A
LD A,0x64
LD (0x930E),A
LD A,0x03
LD (0x930F),A

;Start audio stuff
LD A,0xFF
LD (0x8007),A

;jump to ROM
LD A,0x00;set ROM bank to 0
LD (0xF000),A
LD (0x7FFF),A
LD A,(0x2000);check if cartridge is present
CP 0xFF
JP Z,0x2001;jump to ROM header if cartridge present, else
;trap CPU in loop
TRAP:
JP TRAP

;Tile Data
TILE:
DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
DB 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
DB 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
DB 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
DB 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11
DB 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
DB 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
DB 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
DB 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
DB 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33
DB 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33
DB 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33
DB 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33

;catch any invalid address calling and
;reset the console
1FF0 JP 0x0000
2000 END

;-----------------Subroutines----------------------------
;Memory copy subroutine (IX is source, IY is destination,
;and HL is size in bytes [address 0x1E00]
1E00 MEMCOPY:
LD DE,1
MEMC:
LD A,(IX)
LD (IY),A
INC IX
INC IY
SBC HL,DE
JP NZ, MEMC
LD DE,0
RET

;Multiply subroutine (HL is input and result, B is
;multiplier (HL X B = HL) [address 0x1E20]
1E20 MULT:
LD D,H
LD E,L
MUL:
ADC HL,DE
DEC B
JP NZ,MUL
RET

;Divide subroutine (HL is numerator, BC is denominator
; and D is result (HL / BC = D) [address 0x1E40]
1E40 DIVD:
LD D,0
DIV:
SBC HL,BC
JP NC,DIV2
RET
DIV2:
INC D
JP DIV

It’s probably super messy and could be written faster, but eh it works so far :chimpanzee_winktongue:

4 Likes

So… my first game in 1996: Alien Target 3D, not much 3d there, but anyway :slight_smile:

Written in C for DOS. The game was written in only 1200 lines of code, and is using Borland’s BGI for graphics.

I had another one that looks a bit better: Alien Targets, which was written in 1998/1999. Used that as example when I had C/C++ class in school, and the teacher though that I didn’t needed to attend to any more lessons, but I did anyway… :slight_smile:

The game was still written for DOS in C++. I’ve found some cool stuff on Internet, such as how to change graphics mode to VGA 320x200 using assembly. The game was coming with an install program and was uploaded to a site on geocities, or something similar.

Both started in DOS Box and all source code is still there :slight_smile:

6 Likes

JME port? :wink:

1 Like

Hehe, well, we will see, but I will probably not make it in 2D this time :slight_smile:

1 Like

I did a game for my kids. They liked to play a game (I think it was a java aplet) in the browser when they were about 3 or 4 years. It was a dog which had to avoid all kind of obstacles, but it was way too hard for them. So I wrote a game in java which was almost he same, just easier to play. They were playing a husky (figures) that had to walk and jump and gather bones and meat. It had to avoid some giant rolling snow balls. If that was too hard, they could disabe them. It even had the sound of our own huskies and they got points for the bones. I think that was my first. I might even have it somewhere.

2 Likes

Running With a Vengeance 2: The Prologue: The Pre-Prologue: The Burbs was an RPG where you played as a competitive runner, and it had a whole bunch of old pokemon graphics. You would race people, win some money, buy some new shoes, go to your coach to train, buy performance enhancing drugs, and try to get your mile time down as low as possible.

I made an interactive quest system in swing where you would type commands and there would be dialogue trees and behavior trees for quests. I was pretty proud of it at the time :stuck_out_tongue:

It also had online multiplayer which I made with socket programming that worked pretty OK. You could race each other and walk around and chat which was pretty much it.

I kind of do want to revive it and host it somewhere… IF IT WEREN’T AN APPLET! haha

4 Likes

@pspeed Man, you are old AF :slight_smile: and so talented as a 11 years old kid making game …

My first game is made by GameMaker is a pong game when I was 14 :slight_smile: I didn’t save it anywhere. Later I learn 3d modelling and make game in DxStudio for 2 years a lot of prototypes (mainly in racing games)

1 Like

Programming was a LOT simpler back then. However, we did not have the internet to ask questions… also the computer used the one TV we had in the house so I could only program after my mom had watched all of her soap operas. I can remember ridiculously hand-writing programs to enter later (having no idea what I was writing and just guessing at the commands). When you are young and learning to program, having “Syntax error” feedback is very important. :slight_smile:

6 Likes

?SYNTAX ERROR
READY.

…dad blue background of C64. How about making some Commodore-themed CSS for april’s fools joke :stuck_out_tongue: ?

1 Like

Heheh… I’m an Amiga fan… so it has to have some reference to a “Guru Meditation Error” or I’m not even interested. :smile:

1 Like