Program: Wolfenstein 3D Author: Peter Bucher Version: 1.0 System: TI-83+ MirageOS Started: Mai 2002 Done: Feb 2003, after 3 resumes...... Released: Mar 2003 eMail: peterb@solnet.ch Features: - Raycaster-engine - Sprites - Animations - Weapons - Items - Contrast-effect - Half-Doors - Sliding doors - 16x24 textures and sprites - Enemys - Save/Load - External-levelsupport - Custom enemy - Oncalc mapeditor Included Files: |-Readme.txt 83\ | | | |-WMAP(1-9).83P maps | |-WOLF.83P TI-83 Ashell version | |-WOLFEDIT.83P TI-83 Mapeditor ION | |-WOLFION.83P TI-83 ION 83plus\ | | | |-WMAP(1-9).8xp maps | |-WOLF.8XP MirageOS | |-WOLFEX.8XP MirageOS without Intro | |-WOLFEDIT.8XP On-calc Mapeditor (won't edit wmap(1-9) see "how to create maps") | Develop\ | Source\ | | | | | |-IonRout.asm | | |-Wolf.asm MainFile | | |-Wolf_Buf.asm Mapbuffer | | |-Wolf_Int.asm Intro | | |-Wolf_KI.asm enemy AI (KI in german :p | | |-Wolf_Men.asm was the mainmenu. now only load-rout | | |-Wolf_Tbl.asm LUT | | |-WolfDtex.asm Texturedrawing routine | | |-Wolfenstein3D.apr Assembly Studio 8x project file | | |-WolfRayC.asm Raycasting routine | | |-WolfSPRd.asm Spritedrawing routine | | |-WolfTEX.asm Textures, sprites, graphics, text, ... | Develop\ | Map\ | | | | | |-asmwolf.bat Batchfile to compile the maps | | |-map1_(1-9).gsm Map1-9 as example | | |-Textures.gst Graphicfile for CalcGS | | |-Wolfcomp.exe To compress the maps Keys: 2nd = Shoot Alpha + Up = Open Alpha + Left = StrafeLeft Alpha + Right = StrafeRight XT0n = ChangeWeapon (Only possible if you already picked up the weapon) Del = Quit if you're asked to save or load, 2nd = yes, mode = no (game will only be saved if write-back is allowed) Known Bugs: ########### In my case it runs without crashing, so I think it should be bugfree. Source Code: ############ I think the source is hard to read for someone who didn't work with it and also the mix between english and german comments. I could explain how it works, but I'm too lazy to translate the source. Ask if you want to know something. You are not allowed to release an improved or altered version of the game without my permission!!! Port: ##### I will NOT port this game to TI82/85/86! It's possible, but i don't have any experience with this calc. If you like to port it, feel free. But give me credit! :) Thanks/Credits: ############### Clem Vasseur - His Maze3D was the reason for me to start this project. Big Thanks Törnqvist Hans - His raycaster gave me a big ass kick to implent half-doors and animations Rusty Wagner/Corey Tylor - VTI and CalcGS Hideaki Omuro - division routine (modified) Sam Heald - Levelload routine (modified) History: ######## "3D-RayCast-Engine" 0.10 - Raycasting works (very lame...) 0.20 - Added/Changed some code 0.30 - Porting a big part of the source from 3D-Maze (Sin/Cos/Tan Tables, some calculation routines) 0.40 - Added texturemapping (mapping table from 3D-Maze) 0.45 - Code optimisations. High improvements - should correct some lines in mappingtable..... I'll do this later.... 0.46 - Changed "GetMap" routine... gained a lot of speed 0.49 - Added spritesearch - Added scaledsprite display 0.55 - Sprite position calculations 0.60 - Sprites implented 0.61 - changed some routines - Sprites faster 0.61b - AI-Basics - changed moveroutine. Now i can use the same routine for the enemys too :) 0.65 - "interactive-sprites" implented. those sprites will be the enemys 0.66 - shoot-calculation - kill sprite (enemy) - Level-End - Game-End 0.67 - Items (Health, Ammo, Weapons) 0.68 - Statusbar 0.69 - Keys - Item-sprites 0.70 - Changed from 16x16 Sprites and Textures to 16x24 .. new mapping table. 0.72 - Added Items. - Fixed: Key Bug - Added cool flickering thing when item was pickedup - Added Menu/Title Screen - Work on Save/Load - Menu: NewGame, SaveGame, LoadGame, About, Quit 0.73 - Added contrast effect. 0.73b - improved contrast effect. No longer need to adjust the original contrast 0.73c - I was bored. Got down the filesize by 453bytes 0.74 - Added: Half-Doors - small size optimisations so the implented doors wont slow down the game or raise the size :) 0.75 - Door: Open/Close Animation damn! my keyboard is damaged and sometimes the x-key doesn't react. 3.5 hours to find an "or a" instead of "xor a" .. ARGH! - small optimisations. Now it's as big as it was in version 0.72 :) 0.76 - rewritten some AI-routines. Now faster and more exact - Menu access from game - Menu text and function change. (About-menu isn't avalible anymore. place used for "resume") 0.76b - another AI-rout. rewritten. much faster now! 0.76c - hm... right! AI - rewritten shoot-enemyhit-chk. Now smaller and more exact but slower. - rewritten weapon-animation (was in the same rewrite) 0.76d - some optimisations. 132 bytes - also nice speed-optimisations 0.76e - Made it MirageOS compatible - decreased size by more than 0.5kb - actual size, Mirage: 17982 bytes 0.77 - Added: Turn-speedup - Rewrote sprite-X-pos calculation routine. Deleted xpos table. New Routine is also faster than the old one. :) - slightly optimized sprite draw-routine. - decreased size again by 0,5 kb! - fixed 2 awful bugs. adress of _cleargbuf and _indicatoroff were set to 83 instead of 83+ 0.77b - changed: ammo/health won't be picked up if already max. - added: enemy attack/die animation 0.78 - Added: external levels - Added: mapdescription - Added: mapcompression - Added: connected maps 0.79 - Added: Boss/Enemy in MapPack 0.80 - Added: 2 new enemys and boss - Deleted: Menu - I prefer more enemys to a menu... and actually the menu had no real options... 0.81 - Optimisations - Big speed improvement (optimized multiplication and division... always write your own rout...) + ~2 fps 0.85 - Finally found the crashbug (the game crashed certain times after quit.) 0.90 - Small Intro - fixed: enemy won't drop item on other items - first beta-release - Added: Contrast-Status reset (to prevent a possible bug) 0.95 - replaced height calculation with height-table. -> near walls suck a bit :( but faster and far object can be identified easyer 0.98 - small bug corrections. - decided not to adjust more the height-table. too lazy. - Made Leveleditor. (it works without crashing if you know how to use it) - Added: possibility to turn off the contrast effect 1.0 - Final version! - Activated: different enemy health - some corrections in the editor - TI83 version (ION, ASHELL) - Hint: the developer cheat is still avalible ;) Contact Info for Bug Reports, Suggestions, and General Comments Peter Bucher peterb@solnet.ch How to create own levels: ######################### With PC: ######## Needed: - CalcGS (try at Ticalc.org) - TASM with Devpac83 and Devpac8x (try at Ticalc.org) - WMapCompress.exe (included) - Textures.gsm (for CalcGS) - Open CalcGS - set tilesize to 16x24 (menu: Tiles->Custom->width=16, height=24->OK) - Open Textures.gsm - Open mapeditor, set mapsize to 64x64 - Create a map and export it (z80-source) What should -1,+1,+2 be? The contrast changes if the player is on such a position <> #,#,-1,-1,-1,#,# #,#,+1,+1,+1,#,# or #,#,-1,+1,#,# #,#,-1,+1,#,# #,#,-1,+1,#,# This will f*ck up your calc!!! Attention!: The last enemy is a custom enemy. Now open: Wolfcomp.exe Don't use indicatorstrings like: "E1M1" it's possible that the game uses the wrong map if there're more on the calc. But not more than 10 chars!!! I recommend to use 6 chars so you can edit them also on calc Compile the created asm-file like an TI83 asm prog or use asmwolf.bat (ex: asmwolf.bat [newmap] where [newmap] is the name of the created asm file) DONE! Attention: PlayerY or PlayerX, NEVER 0! With TI: ######## Load Wolfedit.8xp on your calc You'll be asked to load a level or create a new one. Attention. You can't edit and safe a map which has not exactly 6 chars for the indicatorstring. You're able to load the map but it won't save correctly. It's possible if you open it and redefine the mapsettings. Keys: Editscreen: 2nd: place tile Alpha: place tile Math: delete tile Mode: enter tile-select-screen XT0n: redefine mapsettings + : Next level in a mappack Del : Save Clear: Exit Tilescreen: 2nd: select tile for 2nd Alpha: select tile for Alpha Mode: back to Editscreen The Questions: First map? - If you create only one map or start a mappack answer yes Description 19 char - Mapname Mapindicator NEEDS 6 chars - Wolfenstein indentifys the maps by a special string at the beginning of a map. "PBMAP2" Last map? - If there aren't other maps after this answer yes. Next mapindic NEEDS 6 chars - special string to find the next mapfile Example ####### You create 3 levels: 1. Level: First map? -> yes description -> ....... Last map? -> no Next mapindic -> PBMAP2 2. Level: First map? -> no Mapindic -> PBMAP2 Last map? -> no Next mapinidc -> PBMAP3 3. Level: First map? -> no Mapindic -> PBMAP3 Last map? -> yes Now you ask, why one file or each level? 64x64 = 4096 bytes Compressed maps are about 1-2 kb How to get a better compression ratio? ###################################### wrong: #,#,o,o,o,o,o,#,#,# #,#,o, , , ,o,#,#,# #,#,o, , , ,o,#,#,# #,#,o, , , ,o,#,#,# #,#,o,o,o,o,o,#,#,# right: o,o,o,o,o,o,o,o,o,o o,o,o, , , ,o,o,o,o o,o,o, , , ,o,o,o,o o,o,o, , , ,o,o,o,o o,o,o,o,o,o,o,o,o,o -------------------- wrong: o,o,o,o,D,o,o,o,o #,#,#, , , ,#,#,# #,#,#, , , ,#,#,# #,#,#, , , ,#,#,# #,#,#, , , ,#,#,# o,o,o,o,D,o,o,o,o o,o,o, , , ,o,o,o right: o,o,o,o,D,o,o,o,o o,o,#, , , ,#,#,# #,#,#, , , ,#,#,# #,#,#, , , ,#,#,# #,#,#, , , ,#,#,# #,#,#,o,D,o,o,o,o o,o,o, , , ,o,o,o There was something about a custom enemy...??? (not possible on calc!) Yes! If you like, you can change the graphics of the last enemy (boss) How: .db "W3DMAP" .db "Episode 1 Map 1 ",0 .db 20,40,128,"RICKMAP2",0 .db 0 <<<<----------- THIS .db 143,20,5,143,56,128,11,143,21,128,1,64,128,6,65 If it's not zero the next 576 bytes will be written over the last enemy. And the number itself will be the damage. Damage: 100 -> instant death I think something between 15-25 is hard enough... Copyright (C) 2002 Peter Bucher