====== ODIOSUM ====== {{:otros:Odiosum_p1.jpg?690|}} ===== Info ===== ^ Author | Richard Hopkins | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1988 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Languages | English | ^ Status | [[preserved|Preserved]] | ===== Screenshotss ===== {{:otros:Odiosum_screenshot01.png?220}} {{:otros:Odiosum_screenshot02.png?220}} {{:otros:Odiosum_screenshot03.png?220}} {{:otros:Odiosum_screenshot04.png?220}} ===== Description ===== It is a long and quite complicated maze game. A small game that has the best graphics in Mallard Basic. The idea of ​​the game is not very good, there are several maze-type games that involve a small character that climbs the screen, jumping over objects that kill us when touched. The strength of the game lies in its graphics which are surprisingly good. This is achieved by redefining a series of characters that combine to form the man and the labyrinth. The author instead of redefining the character set has redefined several of the vague symbols that we only discovered by pressing "ALT" instead of "SHIFT" by accident. It is recommended to restart your computer after playing the game to reset the character set. The program comes in two parts. The first one redefines the characters that are required and then calls the main program. Our mission is to reach the end of each screen, jumping the obstacles, taking the elevator that takes us to the successive floors and the dangers that lie in wait for us. We will have to collect the key in the middle level and then get to the door in the upper level. We will have to avoid the bird that will kill us in order to get access to the door. A quite entertaining game although somewhat difficult that will make us spend hours in front of the screen. ===== Listing ===== * **__Listing - ODIOSUM.BAS__** 5 '********** ODIOSUM.BAS *************** 10 REM 20 REM Programma van Richard Hopkins uit 8000 PLUS 30 REM Juni 1988, pags. 62 + 63 40 REM Bewerking voor JOYCE Nieuws: Rolf van de Kamer 50 GOSUB 720 60 e$=CHR$(27):rv$=e$+"p":nv$=e$+"q":cl$=e$+"E"+e$+"H":on$=e$+"e":of$=e$+"f" 70 me$="*** O D I O S U M *** [q]=Left [e]=Right [p]=Jump [SPACE]=START [z]=END" 80 DEF FNat$(x,y)=CHR$(27)+"Y"+CHR$(31+x)+CHR$(31+y):PRINT of$:GOTO 670 90 x%=20:y%=24:a$=CHR$(160)+CHR$(161):b$=CHR$(162)+CHR$(163):e%=37:ed%=1:e1%=49:ed1%=-1 100 e2%=41:ed2%=1:k%=0 110 PRINT FNat$(x%,y%);" ";FNat$(x%+1,y%);" ":in$=INKEY$:IF in$="" THEN GOTO 170 120 IF IN$="q" THEN a$=CHR$(166)+CHR$(167):y%=y%+(y%>31) 130 IF y%/2=INT(y%/2) THEN b$=CHR$(170)+CHR$(171) ELSE b$=CHR$(168)+CHR$(169) 140 IF in$="e" THEN a$=CHR$(160)+CHR$(161):y%=y%-(y%<57) 150 IF y%/2=INT(y%/2) THEN b$=CHR$(164)+CHR$(165) ELSE b$=CHR$(162)+CHR$(163) 151 IF in$="z" THEN GOTO 700 160 IF in$="p" THEN GOTO 210 170 PRINT FNat$(x%,y%);a$;FNat$(x%+1,y%);b$:GOSUB 330 180 IF (y%=56 AND x%=20) OR (y%=56 AND x%=14 AND k%=1) THEN GOSUB 440 190 IF y%>42 AND y%<46 AND x%<15 THEN GOTO 290 200 IF x%=8 AND y%=31 THEN GOTO 650 ELSE GOTO 110 210 IF a$=CHR$(160)+CHR$(161) THEN j%=1 ELSE j%=-1 220 FOR z=-1 TO 1 STEP 0.5:PRINT FNat$(x%,y%);" ";FNat$(x%+1,y%);" " 230 x%=x%+(z*2):IF y%>31 AND y%<57 THEN y%=y%+j% 240 IF j%=-1 THEN b$=CHR$(168)+CHR$(169):IF y%/2=INT(y%/2) THEN b$=CHR$(170)+CHR$(171) 250 IF j%=1 THEN b$=CHR$(162)+CHR$(163):IF y%/2=INT(y%/2) THEN b$=CHR$(164)+CHR$(165) 260 PRINT FNat$(x%,y%);a$;FNat$(x%+1,y%);b$ 270 IF l%=0 AND x%=11 AND (y%>33 AND y%<37) THEN GOSUB 310 280 GOSUB 330:NEXT:GOTO 170 290 PRINT FNat$(x%,y%);" ";FNat$(x%+1,y%);" " 300 x%=x%+1:PRINT FNat$(x%,y%);a$;FNat$(x%+1,y%);b$:GOSUB 330:GOTO 290 310 PRINT FNat$(11,35);" ";FNat$(x%,y%);a$;CHR$(7):k%=1:FOR n=0 TO 255:OUT 246,n:NEXT 320 RETURN 330 GOSUB 490:PRINT FNat$(15,e%);" ":e%=e%+ed%:PRINT FNat$(15,e%);CHR$(176);CHR$(177) 340 PRINT FNat$(9,e1%);" ":e1%=e1%+ed1%:PRINT FNat$(9,e1%);CHR$(176);CHR$(177) 350 IF e%=31 OR e%=40 THEN ed%=-ed% 360 IF e1%=48 OR e1%=53 THEN ed1%=-ed1% 370 PRINT FNat$(5,e2%);" ":e2%=e2%+ed2% 380 IF ed2%=1 AND e2%/2=INT(e2%/2) THEN PRINT FNat$(5,e2%);CHR$(184);CHR$(185);CHR$(186);CHR$(187) 390 IF ed2%=1 AND e2%/2<>INT(e2%/2) THEN PRINT FNat$(5,e2%);CHR$(184);CHR$(190);CHR$(191);CHR$(187) 400 IF ed2%=-1 AND e2%/2=INT(e2%/2) THEN PRINT FNat$(5,e2%);CHR$(180);CHR$(181);CHR$(182);CHR$(183) 410 IF ed2%=-1 AND e2%/2<>INT(e2%/2) THEN PRINT FNat$(5,e2%);CHR$(180);CHR$(188);CHR$(189);CHR$(183) 420 IF e2%=41 OR e2%=47 THEN ed2%=-ed2% 430 GOSUB 490:RETURN 440 PRINT FNat$(x%,y%);" ";FNat$(x%+1,y%);" ";FNat$(x%+2,y%-1);" ";STRING$(2,178);" " 450 x%=x%-1:PRINT FNat$(x%,y%);a$;FNat$(x%+1,y%);b$;FNat$(x%+2,y%-1);STRING$(4,179) 460 GOSUB 330:IF x%=14 OR x%=8 THEN RETURN ELSE GOTO 440 470 FOR n=0 TO 91:OUT 245,n:NEXT n 480 me$="Dead ! More luck next time! +++ ":GOTO 670 490 IF (x%=14 AND ABS(e%-y%)<2) OR (x%=8 AND ABS(e1%-y%)<2) THEN GOTO 470 500 IF (x%=5 AND y%-e2%>-2 AND y%-e2%<4) OR (x%=20 AND y%>42 AND y%<46) THEN GOTO 470 510 RETURN 520 PRINT cl$:OUT 248,8 530 FOR n=1 TO 25:PRINT FNat$(n,29);CHR$(173);CHR$(173);FNat$(n,59);CHR$(173);CHR$(173) 540 NEXT 550 PRINT FNat$(22,20);STRING$(11,179);rv$;STRING$(24,179);nv$;STRING$(4,179) 560 FOR n=23 TO 25:PRINT FNat$(n,31);rv$;STRING$(28,179);nv$:NEXT 570 PRINT FNat$(27,29);rv$;" o d i o s u m ";nv$ 580 FOR n=17 TO 21:PRINT FNat$(n,29);" ":NEXT 590 PRINT FNat$(8,29);CHR$(178);" ";FNat$(9,29);CHR$(178);" " 600 PRINT FNat$(16,31);STRING$(24,172);FNat$(10,31);STRING$(24,172) 610 PRINT FNat$(16,43);SPACE$(4);FNat$(10,43);SPACE$(4);FNat$(10,20);STRING$(11,179) 620 PRINT FNat$(11,35);CHR$(174);CHR$(175);FNat$(21,44);CHR$(176);CHR$(177) 630 OUT 248,7:RETURN 640 FOR n%=0 TO 91:OUT 245,n%:NEXT 650 FOR N=-255 TO 255:OUT 246,ABS(n):OUT 245,ABS(n):NEXT:OUT 245,91:PRINT CHR$(7) 660 me$="+++ Congratulations - you finished Odiosum " 670 GOSUB 520 680 PRINT FNat$(28,29);rv$;LEFT$(me$,32);nv$:me$=RIGHT$(me$,LEN(me$)-1)+LEFT$(me$,1) 690 IF INKEY$<>" " THEN GOTO 680 ELSE GOTO 90 700 PRINT CHR$(27)+"E"+CHR$(27)+"H":CLEAR:END 710 REM ***** Grafische Loaders ***** 720 MEMORY &HBFFE:FOR hex=&HC070 TO &HC098:READ pk:POKE hex,pk:NEXT hex 730 DATA 243,62,129,211,241,62,130,211,242,175,95,103,22,184,58,153,192,111,41,41 740 DATA 41,25,17,154,192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201 750 FOR char=160 TO 191:POKE &HC099,char 760 FOR row=1 TO 8:READ binary(row):POKE &HC099+row,(binary(row)):NEXT row 770 cl=&HC070:CALL cl:NEXT char 780 DATA 0,63,63,60,63,63,15,15,0,192,240,192,240,192,0,192 790 DATA 63,255,255,15,63,255,252,255,240,240,60,204,240,60,252,63 800 DATA 63,255,255,63,63,63,63,63,240,240,240,240,192,0,0,192 810 DATA 0,3,15,3,15,3,0,3,0,252,252,60,252,252,240,240 820 DATA 15,15,60,51,15,60,63,252,252,255,255,240,252,255,63,255 830 DATA 15,15,15,15,3,0,0,3,252,255,255,252,252,252,252,252 840 DATA 255,85,170,85,255,0,0,0,85,170,85,170,85,170,85,170 850 DATA 0,0,0,51,204,51,12,0,12,51,192,48,0,0,0,0 860 DATA 15,60,240,240,240,255,63,15,240,252,255,255,63,255,252,240 870 DATA 20,28,20,28,20,28,20,28,186,202,202,189,123,119,205,74 880 DATA 0,0,0,0,63,207,63,0,3,12,51,15,60,243,63,15,48,192,0,63,207,63,255,252,0,0,48,192,240,192,0,0 890 DATA 0,0,12,3,15,3,0,0,12,3,0,252,243,252,255,63,192,48,204,240,60,207,252,240,0,0,0,0,252,243,252,0 900 DATA 0,0,0,15,60,243,63,15,0,0,0,255,207,63,255,252 910 DATA 0,0,0,255,243,252,255,63,0,0,0,240,60,207,252,240 920 RETURN 930 REM Einde van de listing ===== Controls ===== Q = LEFT E = RIGHT P = JUMP SPACE = START GAME ===== Loading the program ===== 1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the game Odiosum 4.- Type run "Odiosum" and press the "ENTER" key ===== Extras ===== * Program listing in high-circulation magazines of the time {{:otros:Odiosum_programa_01.jpg?170}} {{:otros:Odiosum_programa_02.jpg?170}} ===== Download ===== * {{:otros:Odiosum (Basic).zip|Odiosum }}(game in dsk format, compressed with zip) ===== Video ===== {{ youtube>DQtTmYBwpyA?large }}