Re: A82: WHOA, weird problem


[Prev][Next][Index][Thread]

Re: A82: WHOA, weird problem




What's in fixpoint.asm?

82 Master
World of 82

ADAMMAN106@aol.com wrote:

> This file seems to crash TASM every time.  When invoked, TASM displays lots of
> weird stuff - sometimes many colors of weird stuff - and the whole computer
> freezes.  I tried other files, and they compiled fine exept they made TASM
> display a few strange characters
> I reinstalled TASM and nothing bad happens with other files, but this one
> still crashes it.
> If someone would take a look at it (it's basically just some macros, aliases,
> and a small amount of test code), I'd really appreciate it
>
> ~Adamman
>
>   ------------------------------------------------------------------------
> ;3D Game - This is just a primitive demo
> ;Make sure wordwrap (line break) is off!
>
> #include ti82.h
>
> ;Player attributes:
> PLAYER_EPISODE = TEXT_MEM                       ;Word, address of player's current episode
> PLAYER_LEVEL = TEXT_MEM+2                               ;Word, address of player's current level
> PLAYER_SECTOR = TEXT_MEM+4                      ;Word, address of player's current sector
> PLAYER_X = TEXT_MEM+6                           ;Word, x coord of player
> PLAYER_Y = TEXT_MEM+8                           ;Word, y coord of player
> PLAYER_ANGLE = TEXT_MEM+10                      ;Word, angle player is facing
> PLAYER_HEIGHT = TEXT_MEM+12                     ;Byte, height of player
> PLAYER_XRATE = TEXT_MEM+13                      ;Byte, changing value added to PLAYER_X
> PLAYER_YRATE = TEXT_MEM+14                      ;Byte, changing value added to PLAYER_Y
> PLAYER_TURNRATE = TEXT_MEM+15                   ;Byte, changing value added to PLAYER_ANGLE
> PLAYER_HEIGHTRATE = TEXT_MEM+16                 ;Byte, changing value added to PLAYER_HEIGHT
> FIELD_OF_VIEW = 60                              ;Player has a 60 degree field of vision
>
> ;Screen attributes:
> PROJECTION_PLANE_WIDTH = 96                     ;Width of screen
> PROJECTION_PLANE_HEIGHT = 60                    ;Height of screen
> PROJECTION_PLANE_CENTER = TEXT_MEM+17           ;Byte, Center of the screen (for looking up/down)
> PROJECTION_PLANE_DISTANCE = 83                  ;Distance to the projection plane
>                                                 ;       Lower = smaller picture
>                                                 ;       Highter = larger picture
>
> ;Convert 0-360 angles to extended 0-579 (magic) angles.
> ;This way we never get decimal places, so it's easy to put things into tables.  MAGIC!
> #DEFINE angles(angle_argument) angle_argument*PROJECTION_PLANE_WIDTH/FIELD_OF_VIEW
>
> ;Easy macros for world databases:
> #DEFINE EPISODE(ep_firstlevel,ep_nextepisode,ep_title) .dw ep_firstlevel,ep_nextepisode \ .db ep_title,0
> #DEFINE LEVEL(lev_firstsector,lev_nextlevel,lev_skytexture,lev_title) .dw lev_firstsector,lev_nextlevel,lev_skytexture \ .db lev_title,0
> #DEFINE SECTOR(sect_firstseg,sect_nextsect,sect_startx,sect_starty,sect_startang,sect_startheight,sect_currentseg,sect_leftangle,sect_rightangle)
>         #DEFCONT \ .dw sect_firstseg,sect_nextsect,sect_startx,sect_starty,sect_startang \ .db sect_startheight \ .dw sect_currentseg,sect_leftangle,sect_rightangle
> #DEFINE SIDE(side_sector,side_nextseg,side_texture,side_transparent) .dw side_sector,side_nextseg,side_texture \ .db side_transparent
> #DEFINE SEGMENT(seg_x1,seg_y1,seg_x2,seg_y2,seg_side1,seg_side2,seg_sector,seg_angle) .dw seg_x1,seg_y1,seg_x2,seg_y2,seg_side1,seg_side2,seg_sector,seg_angle
>
> ;Add these to a structure to obtain the requested element:
>         ;Episodes:
>                 FIRST_LEVEL = 0
>                 NEXT_EPISODE = 2
>                 EPISODE_TITLE = 4
>         ;Levels:
>                 FIRST_SECTOR = 0
>                 NEXT_LEVEL = 2
>                 SKY_TEXTURE = 4
>                 LEVEL_TITLE = 6
>         ;Sectors:
>                 FIRST_SEGMENT = 0
>                 NEXT_SECTOR = 2
>                 START_X = 4
>                 START_Y = 6
>                 START_ANGLE = 8
>                 START_HEIGHT = 10
>                 THE_SEGMENT = 11
>                 LEFT_ANGLE = 13
>                 RIGHT_ANGLE = 15
>         ;Sides:
>                 SIDE_SECTOR = 0
>                 NEXT_SEGMENT = 2
>                 SIDE_TEXTURE = 4
>                 CLEAR_SIDE = 6
>         ;Segments:
>                 FIRST_X = 0
>                 FIRST_Y = 2
>                 SECOND_X = 4
>                 SECOND_Y = 6
>                 SIDE_1 = 8
>                 SIDE_2 = 10
>                 SEGMENT_SECTOR = 12
>                 SEGMENT_ANGLE = 14
>
> .org START_ADDR
> .db "-3D Game- Demo by Adamman", 0
>
>         ld hl, 0
>         ld (CURSOR_POS), hl
>         ld hl, FIRST_EPISODE
>         add hl, EPISODE_TITLE
>         ROM_CALL(D_ZT_STR)
>         ROM_CALL(NEXT_LINE)
>         ld hl, FIRST_EPISODE
>         add hl, FIRST_LEVEL
>         call LD_HL_MHL
>         add hl, LEVEL_TITLE
>         ROM_CALL(D_ZT_STR)
>         ROM_CALL(KEY_HAND)
>         ret
>
> ;Episodes: FIRST_LEVEL,NEXT_EPISODE,EPISODE_TITLE
> ;Levels: FIRST_SECTOR,NEXT_LEVEL,SKY_TEXTURE,LEVEL_TITLE
> ;Sectors: FIRST_SEGMENT,NEXT_SECTOR,START_X,START_Y,START_ANGLE,START_HEIGHT,THE_SEGMENT,LEFT_ANGLE,RIGHT_ANGLE
> ;Sides: SIDE_SECTOR,NEXT_SEGMENT,SIDE_TEXTURE,CLEAR_SIDE
> ;Segments: FIRST_X,FIRST_Y,SECOND_X,SECOND_Y,SIDE_1,SIDE_2,SEGMENT_SECTOR,SEGMENT_ANGLE
>
> ;World database:
> FIRST_EPISODE = Episode1
>         Episode1:       EPISODE(Level1,Episode1,"Happy Land!")
>         Level1:         LEVEL(Sector1,Level1,0,"Place of Donuts")
>         Sector1:        SECTOR(Segment1,Sector1,150,150,45,32,0,0,0)
>         Segment1:       SEGMENT(0,0,0,300,Side1,0,Sector1,0)
>         Segment2:       SEGMENT(0,300,300,300,Side2,0,Sector1,0)
>         Segment3:       SEGMENT(300,300,300,0,Side3,0,Sector1,0)
>         Segment4:       SEGMENT(300,0,0,0,Side4,0,Sector1,0)
>         Side1:          SIDE(Sector1,Segment2,0,0)
>         Side2:          SIDE(Sector1,Segment3,0,0)
>         Side3:          SIDE(Sector1,Segment4,0,0)
>         Side4:          SIDE(Sector1,Segment1,0,0)
>
> #include fixpoint.asm
> .end




References: