A sign of excess weirdness?

Non-spam and Anime things that don't fit in C&C. Also where talk that you don't want to turn into spam goes. So No Spam allowed

Re: A sign of excess weirdness?

Postby Spica75 » Wed Jun 15, 2016 8:38 am

Cheb wrote:You too? :)

I made a whole first person shooter using Turbo Pascal :roll:


Not bad... :D

"and naked women turn to dressed ones. "
Wasn´t it supposed to be the other way around? :mrgreen:
Spica75
User avatar
Prism Power Senshi
Posts: 2399
 

Re: A sign of excess weirdness?

Postby Spokavriel » Wed Jun 15, 2016 9:07 am

You tend to see a default mode more often. So I guess its a matter of personal preference.
Image
Spamville Character ProfileArchived Current Senshi of Ophelia (Uranus VII).
My Console Video Games
Spokavriel
User avatar
Eternal Power Senshi
Posts: 47773
 

Re: A sign of excess weirdness?

Postby Cheb » Wed Jun 15, 2016 10:37 am

Wasn´t it supposed to be the other way around?


That's for the monsters. I don't remember exact details of their target selection algorithm but if they detect a girl nearby they perform a melee attack that does 0 damage but converts the object type to "naked" with a "rrrip" sound.

I was going to make the tied girls rescueable NPC followers but as with everything I failed to find means of producing sprite sets. If you look closely, even the ogre is a retouched arch-vile from Doom 2.
I would happily use clay models, even had a vinyl disk player to sacrifice as a base, but I simply did not have a digital camera :((((

Maybe it was a good thing, though, since the code is a mess and its efficiency is atrocious (required a pentium 266 to render some maps smoothly)
Proud owner of 1.5 kilograms of Germanium transistors
Cheb
User avatar
Moon Senshi
Posts: 1549
 

Re: A sign of excess weirdness?

Postby Té Rowan » Wed Jun 15, 2016 3:33 pm

Never got as far as making a game. My biggest game-related project was a sixteen-segment starburst display in 320×200 (mode 13h) for both top and bottom of screen. It is in both TP5 and TASM.

Code: Select all
UNIT Alphanum;

INTERFACE

TYPE c20 = ARRAY[0..19] OF CHAR;

PROCEDURE Mode13h; Inline($B8/$13/$00/$CD/$10);

PROCEDURE Clear_top_row(bg, fg1, fg2: BYTE);
PROCEDURE Clear_bot_row(bg, fg1, fg2: BYTE);
PROCEDURE Recol_top_row(fg1, fg2: BYTE);
PROCEDURE Recol_bot_row(fg1, fg2: BYTE);
PROCEDURE Write_top_row(VAR s: c20);
PROCEDURE Write_bot_row(VAR s: c20);

IMPLEMENTATION

PROCEDURE Clear_top_row(bg, fg1, fg2: BYTE); EXTERNAL;
PROCEDURE Clear_bot_row(bg, fg1, fg2: BYTE); EXTERNAL;
PROCEDURE Recol_top_row(fg1, fg2: BYTE); EXTERNAL;
PROCEDURE Recol_bot_row(fg1, fg2: BYTE); EXTERNAL;
PROCEDURE Write_top_row(VAR s: c20); EXTERNAL;
PROCEDURE Write_bot_row(VAR s: c20); EXTERNAL;
{$L ALPHANUM}

END.


Code: Select all
TITLE  "Routines to emulate a 16-segment alphanumeric display."
SUBTTL "Routines set for TOS/BOS."
IDEAL
MODEL TPASCAL

; mode   = 13h
; ES     = 0A000h
; SI, DI = sacred to offset into screen
; AL     = sacred to colour
; BX     = sacred to colour sequence

dull_colour   =  8
bright_colour = 15

CODESEG
PUBLIC Clear_bot_row, Recol_bot_row, Write_bot_row
PUBLIC Clear_top_row, Recol_top_row, Write_top_row

; Each starburst is 16x24 pixels.

; Shape:
;         - -
;        |\|/|
;         - -
;        |/|\|
;         - -

; Following are the sequences by which the segments are drawn.
; Lower-case letters contain alternatives to upper-case.

; Order:    --|\|/|--|/|\|--   --|\|/|--|/|\|--
col_seqs DW 0000000000000000b, 0000000000000000b ;  , !
         DW 0000101000000000b, 0000101110010111b ; ", #
         DW 1110100110010111b, 1010110110110101b ; $, %
         DW 1001110101011110b, 0000010000000000b ; &, '
         DW 0000010000001000b, 0001000000100000b ; (, )
         DW 0001110110111000b, 0000100110010000b ; *, +
         DW 0000000000100000b, 0000000110000000b ; ,, -
         DW 0000000000010010b, 0001000000001000b ; ., /
         DW 0100101000010101b, 0000011000000100b ; 0, 1
         DW 0100001010010001b, 0100001010000101b ; 2, 3
         DW 0000101010000100b, 0100100010000101b ; 4, 5
         DW 0100100010010101b, 0100001000000100b ; 6, 7
         DW 0100101010010101b, 0100101010000101b ; 8, 9
         DW 1000000100000000b, 1000000000100000b ; :, ;
         DW 0000010000001000b, 0000000110000011b ; <, =
         DW 0001000000100000b, 1110001010010000b ; >, ?
         DW 0000000000000000b, 1110001111000100b ; @, A
         DW 1100101010010111b, 1110000001000011b ; B, C
         DW 1100101000010111b, 1110000101000011b ; D, E
         DW 1110000101000000b, 1110000011000111b ; F, G
         DW 0010001111000100b, 1100100000010011b ; H, I
         DW 1100100001010010b, 0010010101001000b ; J, K
         DW 0010000001000011b, 0011011001000100b ; L, M
         DW 0011001001001100b, 1110001001000111b ; N, O
         DW 1110001111000000b, 1110001001001111b ; P, Q
         DW 1110001111001000b, 1110000110000111b ; R, S
         DW 1100100000010000b, 0010001001000111b ; T, U
         DW 0010010001100000b, 0010001001101100b ; V, W
         DW 0001010000101000b, 0010001110010000b ; X, Y
         DW 1100010000100011b, 0100100000010001b ; Z, [
         DW 0001000000001000b, 1000100000010010b ; \, ]
         DW 1110001000000000b, 0000000000000011b ; ^, _
         DW 0001000000000000b, 0100101010010100b ; `, a
         DW 0000100010010101b, 0000000010010001b ; b, c
         DW 0000001010010101b, 0100100010010001b ; d, e
         DW 0100100010010000b, 1110000011000111b ; f, g
         DW 0010001111000100b, 1100100000010011b ; h, i
         DW 1100100001010010b, 0010010101001000b ; j, k
         DW 0010000001000011b, 0011011001000100b ; l, m
         DW 0011001001001100b, 1110001001000111b ; n, o
         DW 1110001111000000b, 1110001001001111b ; p, q
         DW 1110001111001000b, 1110000110000111b ; r, s
         DW 1100100000010000b, 0010001001000111b ; t, u
         DW 0001001000001100b, 0010001001101100b ; v, w
         DW 0001010000101000b, 0010001110000111b ; x, y
         DW 1100010000100011b, 0100100100010001b ; z, {
         DW 0000100000010000b, 1000100010010010b ; |, }
         DW 1010101010000000b, 1111111111111111b ; ~, #127

top_fg1 DB dull_colour
top_fg2 DB bright_colour
bot_fg1 DB dull_colour
bot_fg2 DB bright_colour

PROC Clear_bot_row FAR bg: BYTE, fg1: BYTE, fg2: BYTE;
   MOV AL, [fg1]
   MOV [CS:bot_fg1], AL
   MOV AL, [fg2]
   MOV [CS:bot_fg2], AL
   MOV CX, 3840
   MOV AX, 0A000h
   MOV ES, AX
   MOV DI, 0DC00h
   MOV AL, [bg]
   MOV AH, AL
   CLD
   REP STOSW
   RET
ENDP Clear_bot_row

PROC Recol_bot_row FAR fg1: BYTE, fg2: BYTE;
   MOV AL, [fg1]
   MOV [CS:bot_fg1], AL
   MOV AL, [fg2]
   MOV [CS:bot_fg2], AL
   RET
ENDP Recol_bot_row

PROC Write_bot_row FAR s: DWORD
   MOV AL, [CS:bot_fg1]
   MOV [BYTE PTR CS:SelCol_1+1], AL
   MOV AL, [CS:bot_fg2]
   MOV [BYTE PTR CS:SelCol_2+1], AL
   PUSH DS
   MOV AX, 0A000h
   MOV ES, AX
   LDS SI, [s]
   MOV CX, 20
   MOV DX, 0DC00h+642
   CLD
WB_1:
   XOR BH, BH
   MOV BL, [DS:SI]
   INC SI
   AND BL, 7Fh
   SUB BL, 32
   SHL BX, 1
   ADD BX, OFFSET CS:col_seqs
   MOV BX, [CS:BX]
   PUSH SI
   MOV SI, DX
   CALL Write_segments
   ADD DX, 16
   POP SI
   LOOP WB_1
   POP DS
   RET
ENDP Write_bot_row

PROC Clear_top_row FAR bg: BYTE, fg1: BYTE, fg2: BYTE;
   MOV AL, [fg1]
   MOV [CS:top_fg1], AL
   MOV AL, [fg2]
   MOV [CS:top_fg2], AL
   MOV CX, 3840
   MOV AX, 0A000h
   MOV ES, AX
   XOR DI, DI
   MOV AL, [bg]
   MOV AH, AL
   CLD
   REP STOSW
   RET
ENDP Clear_top_row

PROC Recol_top_row FAR fg1: BYTE, fg2: BYTE;
   MOV AL, [fg1]
   MOV [CS:top_fg1], AL
   MOV AL, [fg2]
   MOV [CS:top_fg2], AL
   RET
ENDP Recol_top_row

PROC Write_top_row FAR s: DWORD
   MOV AL, [CS:top_fg1]
   MOV [BYTE PTR CS:SelCol_1+1], AL
   MOV AL, [CS:top_fg2]
   MOV [BYTE PTR CS:SelCol_2+1], AL
   PUSH DS
   MOV AX, 0A000h
   MOV ES, AX
   LDS SI, [s]
   MOV CX, 20
   MOV DX, 642
   CLD
WT_1:
   XOR BH, BH
   MOV BL, [DS:SI]
   INC SI
   AND BL, 7Fh
   SUB BL, 32
   SHL BX, 1
   ADD BX, OFFSET CS:col_seqs
   MOV BX, [CS:BX]
   PUSH SI
   MOV SI, DX
   CALL Write_segments
   ADD DX, 16
   POP SI
   LOOP WT_1
   POP DS
   RET
ENDP Write_top_row

Write_segments:
   MOV DI, SI
   CALL Hbar
   CALL Hbar
   MOV DI, SI
   CALL Vbar
   MOV DI, SI
   CALL Bslash
   ADD SI, 6
   MOV DI, SI
   CALL Vbar
   MOV DI, SI
   CALL Fslash
   ADD SI, 6
   MOV DI, SI
   CALL Vbar
   ADD SI, 2868
   MOV DI, SI
   CALL Hbar
   CALL Hbar
   MOV DI, SI
   CALL Vbar
   MOV DI, SI
   CALL Fslash
   ADD SI, 6
   MOV DI, SI
   CALL Vbar
   MOV DI, SI
   CALL Bslash
   ADD SI, 6
   MOV DI, SI
   CALL Vbar
   ADD SI, 2868
   MOV DI, SI
   CALL Hbar
   CALL Hbar
   RET

SelCol:
   SHL BX, 1
   JC SelCol_2
SelCol_1:
   MOV AL, dull_colour
   JMP SHORT SelCol_3
SelCol_2:
   MOV AL, bright_colour
SelCol_3:
   RET

Hbar:
   CALL SelCol
   INC DI
   STOSB
   STOSB
   STOSB
   STOSB
   STOSB
   RET

Vbar:
   CALL SelCol
   ADD DI, 320
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 319
   STOSB
   RET

Bslash:
   CALL SelCol
   ADD DI, 321
   STOSB
   ADD DI, 320
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 320
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 320
   STOSB
   ADD DI, 319
   STOSB
   ADD DI, 320
   STOSB
   RET

Fslash:
   CALL SelCol
   ADD DI, 2561
   STOSB
   SUB DI, 320
   STOSB
   SUB DI, 321
   STOSB
   SUB DI, 320
   STOSB
   SUB DI, 321
   STOSB
   SUB DI, 320
   STOSB
   SUB DI, 321
   STOSB
   SUB DI, 320
   STOSB
   RET

ENDS CODE

END
I go walking. My mind goes wandering.
Té Rowan
User avatar
Prism Power Senshi
Posts: 3014
 

Re: A sign of excess weirdness?

Postby Ellen Kuhfeld » Wed Jun 15, 2016 5:17 pm

Games? I ported Spacewar to the CDC 3100 using a mix of a Fortran driving routine and 3100 assembly language subroutines. Mostly I used scaling to handle division and multiplication, but for the Sun's gravity, I had to go over to floating point. Definitely not machine-independent.
Visit Big Washuu's Lab of Arcane Knowledge at http://washuu.net
Ellen Kuhfeld
User avatar
Sailor Starlight
Posts: 2228
 

Re: A sign of excess weirdness?

Postby Spica75 » Wed Jun 15, 2016 9:41 pm

Cheb wrote:
That's for the monsters. I don't remember exact details of their target selection algorithm but if they detect a girl nearby they perform a melee attack that does 0 damage but converts the object type to "naked" with a "rrrip" sound.

I was going to make the tied girls rescueable NPC followers but as with everything I failed to find means of producing sprite sets. If you look closely, even the ogre is a retouched arch-vile from Doom 2.
I would happily use clay models, even had a vinyl disk player to sacrifice as a base, but I simply did not have a digital camera :((((

Maybe it was a good thing, though, since the code is a mess and its efficiency is atrocious (required a pentium 266 to render some maps smoothly)


Ah, well then that actually makes sense.


#####

Never got as far as making a game.


I´ve made a bundle of games, but nothing remotely like a FPS game or anything truly advanced(except for small parts of various games at least). Once and only once did i even try to make a game with graphics, and i utterly and spectacularly sucked at it.

I think my rock-paper-scissors game was actually the most successful, despite being tiny, i somehow managed to write up the AI for it to be annoyingly good, once you played more than 5 or so rounds, it nearly always kept winning more than loosing, horribly often even much more.
And the AI part took up something like 99% of the total program... :P

Written and compiled with the nice Asic language i found online late 90s or something (essentially an improved version of Basic with the ability to properly compile to .exe, .com and advanced file handling included).

The soccer manager game looked interesting, up until i realised that the way i used 3 dimensional arrays to simplify what i needed to write in code(basically had a few blocks of a few lines each of code that could be used for every calculation in the game, just by feeding them data differently from the silly huge arrays) used up a horrible amount of memory and even worse, the damn thing would have needed at least a whole disc on the C=128 to make a complete savegame. And at that point, remaking it using another model would essentially mean rewriting everything from scratch after figuring out a way to handle it AND having to write drastically more code... Yeah, there endeth that game. Playable, but only partially and barely before dropped.

My inside trader/corporate raider game was just sad... Not quite boring, not exactly bad, not horribly unrealistic, not really terrible, just sad. :|
It was a bad idea that was only just passably coded that i should never have bothered writing.

#####

Games? I ported Spacewar to the CDC 3100 using a mix of a Fortran driving routine and 3100 assembly language subroutines. Mostly I used scaling to handle division and multiplication, but for the Sun's gravity, I had to go over to floating point. Definitely not machine-independent.


Hah, Spacewar was a fun little game to play against a friend on ye olde PC when you just wanted a few minutes of temporary amusement. My friend wrote up his own version of it once(on Amiga IIRC), but then got sidetracked before finishing it beyond "just barely functional". Which was a pity, as he had some neat and fun ideas for making it a better/more involved and evolving game.
Spica75
User avatar
Prism Power Senshi
Posts: 2399
 

Re: A sign of excess weirdness?

Postby Té Rowan » Thu Jun 16, 2016 6:48 am

Never wrote a game, yes; but I did port one named Slingshot to my 286. Same idea as Spacewar but with no movement except for the torps, many suns and even black holes. One had to type in a direction (real) and initial acceleration time (integer) to fire a torp, wait until it hit something or left the game, and then the other guy had a chance. Of course it tended to devolve into who could keep the torp longer in flight and make it do prettier curves.

Gratuitous floating point and an N-body problem… I’m glad I did buy that 287XL.
I go walking. My mind goes wandering.
Té Rowan
User avatar
Prism Power Senshi
Posts: 3014
 

Re: A sign of excess weirdness?

Postby Spica75 » Thu Jun 16, 2016 9:39 am

Té Rowan wrote:Never wrote a game, yes; but I did port one named Slingshot to my 286. Same idea as Spacewar but with no movement except for the torps, many suns and even black holes. One had to type in a direction (real) and initial acceleration time (integer) to fire a torp, wait until it hit something or left the game, and then the other guy had a chance. Of course it tended to devolve into who could keep the torp longer in flight and make it do prettier curves.

Gratuitous floating point and an N-body problem… I’m glad I did buy that 287XL.


Ah, so basically an advanced variation on Ballistics. Sounds like an amusing but somewhat limited(in that you can´t move at all) exercise in figuring out weird trajectories.
Spica75
User avatar
Prism Power Senshi
Posts: 2399
 

Re: A sign of excess weirdness?

Postby Spokavriel » Thu Jun 16, 2016 11:54 am

Well Monkey.BAS was fun and you had two apes tossing explosive bananas at each other. Similar limitations on mobility.
Image
Spamville Character ProfileArchived Current Senshi of Ophelia (Uranus VII).
My Console Video Games
Spokavriel
User avatar
Eternal Power Senshi
Posts: 47773
 

Re: A sign of excess weirdness?

Postby Spica75 » Thu Jun 16, 2016 1:15 pm

Spokavriel wrote:Well Monkey.BAS was fun and you had two apes tossing explosive bananas at each other. Similar limitations on mobility.

:mrgreen:
Spica75
User avatar
Prism Power Senshi
Posts: 2399
 

Re: A sign of excess weirdness?

Postby Té Rowan » Thu Jun 16, 2016 2:48 pm

The version I based my Slingshot on was published in the October 1983 issue of Computing Today, a UK magazine. That one was based on a version written in RC-COMAL in the 1970s. Yep, a game from the land of roligans and smørgåsbord.
I go walking. My mind goes wandering.
Té Rowan
User avatar
Prism Power Senshi
Posts: 3014
 

Re: A sign of excess weirdness?

Postby Cheb » Fri Jun 17, 2016 3:04 am

Spica75 wrote:And the AI part took up something like 99% of the total program... :P

That's how games should be! Image

Spacewar

Image

Gratuitous floating point and an N-body problem…

:(
*sigh*
Limited by 64K of static variables for the entirety game physics (remember, folks, TP worked with *segmented* memory model with 16:16 pointers) my game could only have 512 MOBs (of which up 63 positions were reserved for NPCs, the gragon boss taking up 4 slots as heads were separately destructible and player being the 0th) with physics cost being exactly O^2 (512x512 checks :( ).
You can also see this video ending in a crash due to the boss shooting too fast and causing a MOB array overrun.

I’m glad I did buy that 287XL.

People making games that could run on such machines were, like, mighty heroes of legend. Prince of Persia, Death Track... I'm awed they could make the magic work on 640Kb and EGA.
By the way EGA made the concept of back buffer really easy, it could support up to EIGHT display pages. Not two. Not four. Eight. And don't forget hardware-accelerated vertical scrolling of *parts* of the screen.
Proud owner of 1.5 kilograms of Germanium transistors
Cheb
User avatar
Moon Senshi
Posts: 1549
 

Re: A sign of excess weirdness?

Postby Té Rowan » Fri Jun 17, 2016 6:29 am

Spacewar was the first computer ‘arcade’ game. Two spaceships orbiting a sun tried to shoot each other down with torpedoes.

https://en.wikipedia.org/wiki/Spacewar_(video_game)
http://www.computerhistory.org/pdp-1/spacewar/ — Best way to make computers popular?
http://spacewar.oversigma.com/ — running on an emulated PDP-1 in your browser.
http://www.masswerk.at/spacewar/ — running on an emulated PDP-1 in your browser.
I go walking. My mind goes wandering.
Té Rowan
User avatar
Prism Power Senshi
Posts: 3014
 

Re: A sign of excess weirdness?

Postby Spica75 » Fri Jun 17, 2016 10:04 am

That's how games should be!

:D

It would be a lot more impressive if the total size wasn´t small enough that it could easily have run even on my old C=64 as well as on the PC i wrote it on. :mrgreen:
Heck, if i had had the desire and endurance to recode it using POKEs and PEEKs, i could probably have fit it into the 16kB of the Vic-20.

People making games that could run on such machines were, like, mighty heroes of legend. Prince of Persia, Death Track... I'm awed they could make the magic work on 640Kb and EGA.


If you look at early games, you really find more impressive stuff on the C=64 than on 286, despite having less than a tenth of the RAM. Well ok, that of course depends on what exactly you´re looking at.
Spica75
User avatar
Prism Power Senshi
Posts: 2399
 

Re: A sign of excess weirdness?

Postby Té Rowan » Fri Jun 17, 2016 1:07 pm

Some interesting hacks, tricks and techniques…

http://aggregate.org/MAGIC/
http://graphics.stanford.edu/~seander/bithacks.html
http://www.cleveralgorithms.com/
http://www.hackersdelight.org/

Me and hackology… not a good combo for others’ sanity. Not that I really give a crooked fig. :mrgreen:
I go walking. My mind goes wandering.
Té Rowan
User avatar
Prism Power Senshi
Posts: 3014
 

PreviousNext

Return to Other Talk

Who is online

Users browsing this forum: No registered users

cron