Ninety Six

iconNinety Six is a port to Android from a 20 years-old Pac-Man style MS-DOS game wich was made in C and Assembler.

As the name suggests, this game was first made in 1996. In that time I was studying at the high school and with a friend of mine we had begun to develop some games just for fun, as a hobby. The game was developed following the very old school style. Pure C, and some Assembler for the most demanding jobs, pure performance and speed.

The thing is that the game ended up with quite good shape (I used 3DStudio, can’t really remember the version, but it was not the current Max but one of the earliest versions for MS-DOS) and quite good control feeling so I managed to promote it across some magazines under the shareware model.

Now, after being playing with Android frameworks and technologies and after deploying a quite complex and ambitious application, I wanted to do something different, so I began to adapt the code to Java and to build the required Android development…. and I must say it was indeed very easy to do! It’s awesome how easy is to port 20 years old C code to Java, and not needing any OpenGL or similar framework to speed up the game makes the things even easier!. By the way the main icon for the store was made with Blender, an awesome 3D package wich can face many others in several aspects like Max, Maya or even the almost extinct Softimage or Lightwave.

Off course I wanted to try something different for what was going to be my second Android App, so this game includes ads and monetization, in app-purchases and achievements, which taked the most development time.

If you enjoy some retro gaming I’m sure you will enjoy it a lot, give it a try!

Get it on Google Play

Bonus:
Do you miss old (like very old) Assembler times? here is part of the original Ninety Six code written in Assembler (couldn’t find a beautifier for assembler code online haha):

		PUBLIC  _ERASE_SPRITE
_ERASE_SPRITE   PROC    NEAR
		push    bp
		mov     bp,sp
		push    ds
		push    si
		push    es
		push    di
		push    ax
		push    bx
		push    cx
		push    dx
		lds     si,[bp+24]
		les     di,[bp+28]
		mov     ax,320d     
		mov     bx,[bp+10]
		mul     bx
		add     ax,[bp+8]
		add     si,ax
		mov     ax,320d
		mov     bx,[bp+14]
		mul     bx
		add     ax,[bp+12]
		add     di,ax
		mov     bx,[bp+20]
		mov     ax,320d
		mov     cx,[bp+6]
		mul     cx
		add     ax,[bp+4]
		add     bx,ax
		mov     cx,[bp+16]
		mov     dx,[bp+18]
	bucl:   push    ds
		mov     ds,[bp+22]
		mov     al,[bx]
		pop     ds
		cmp     al,0ffh
		jz      no_pin
		movsb
		inc     bx
		loop    bucl
	sig:    dec     dx
		jz      exit
		mov     cx,[bp+16]
		mov     ax,320d
		sub     ax,cx
		add     si,ax
		add     di,ax
		add     bx,ax
		jmp     bucl
	no_pin: inc     si
		inc     di
		inc     bx
		loop    bucl
		jmp     sig
	exit:   pop     dx
		pop     cx
		pop     bx
		pop     ax
		pop     di
		pop     es
		pop     si
		pop     ds
		pop     bp
		ret
_ERASE_SPRITE   ENDP

 

Advertisements