**************************************************************************** **************************************************************************** ** ** Monster (TI-89 Display routine) ** ** Copyright 2001 by Patrick Davidson. This software may be freely ** modified and/or copied with no restrictions. There is no warranty. ** ** by Patrick Davidson (pad@calc.org, http://pad.calc.org/) ** ** Last updated December 31, 2001 ** **************************************************************************** **************************************************************************** ******************************************** PREPARE GRAYSCALE DISPLAY Grayscale_Post_Init: move.l gs_plane0(pc),a0 move.l gs_plane1(pc),a1 move.l a0,plane0(a5) move.l a1,plane1(a5) moveq #0,d0 move.w #959,d1 \l: move.l d0,(a0)+ move.l d0,(a1)+ dbra d1,\l move.l #(159<<16)+95,-(sp) pea (a5) JSR_ROM PortSet lea 8(sp),sp rts ******************************************** INITIALIZE IN-GAME DISPLAY Initialize_Game_Screen: moveq #0,d0 bsr Set_Font moveq #0,d0 moveq #0,d1 lea top_msg(pc),a0 bsr Display_String lea (a5),a0 move.l plane0(a5),a1 move.l plane1(a5),a2 moveq #4,d0 \o: moveq #4,d1 \i: move.l (a0)+,d2 move.l d2,(a1)+ move.l d2,(a2)+ dbra d1,\i lea 10(a1),a1 lea 10(a2),a2 dbra d0,\o rts top_msg: dc.b 'Monster Level: - Lives: - Score:',0 EVEN ******************************************** DISPLAY INFORMATION Show_Score: lea score+1(a5),a0 move.l plane1(a5),a1 lea 17(a1),a1 moveq #2,d0 bra Display_BCD Show_Level_Number: move.w level(a5),d0 bsr Convert_To_BCD moveq #0,d0 lea temp_buffer(a5),a0 move.l plane1(a5),a1 lea 7(a1),a1 bra Display_BCD Show_Lives_Number: move.w lives(a5),d0 bsr Convert_To_BCD moveq #0,d0 lea temp_buffer(a5),a0 move.l plane1(a5),a1 lea 12(a1),a1 bra.s Display_BCD ******************************************** DISPLAY SCREEN BUFFER Display_Screen: LEA (A5),A0 lea 96*WIDTH_BYTES(a5),a3 move.l plane1(a5),a1 move.l plane0(a5),a2 lea 150(a1),a1 lea 150(a2),a2 MOVEQ #94,D0 LAB_0124: MOVE.L (A0)+,(A1)+ move.l (a3)+,(a2)+ MOVE.L (A0)+,(A1)+ move.l (a3)+,(a2)+ MOVE.L (A0)+,(A1)+ move.l (a3)+,(a2)+ MOVE.L (A0)+,(A1)+ move.l (a3)+,(a2)+ MOVE.L (A0)+,(A1)+ move.l (a3)+,(a2)+ lea 10(a1),A1 lea 10(a2),a2 DBF D0,LAB_0124 RTS Display_Half: LEA (A5),A0 move.l plane1(a5),a1 move.l plane0(a5),a2 lea 150(a1),a1 lea 150(a2),a2 MOVEQ #94,D1 \l: MOVE.L (A0)+,d0 move.l d0,(a1)+ move.l d0,(a2)+ MOVE.L (A0)+,d0 move.l d0,(a1)+ move.l d0,(a2)+ MOVE.L (A0)+,d0 move.l d0,(a1)+ move.l d0,(a2)+ MOVE.L (A0)+,d0 move.l d0,(a1)+ move.l d0,(a2)+ MOVE.L (A0)+,d0 move.l d0,(a1)+ move.l d0,(a2)+ lea 10(a1),A1 lea 10(a2),a2 DBF D1,\l RTS ******************************************* DISPLAY A BCD NUMBER * * Displays D0+1 bytes of a BCD number at A0 in memory at A1. * * Modifies D0, D1, A0 - A2. * ******** Display_BCD: move.b (a0),d1 and.w #$f0,d1 lsr.w #4,d1 mulu #5,d1 lea digits(pc,d1.w),a2 moveq #4,d1 loop_copy: move.b (a2)+,d2 move.b d2,(a1) lea 30(a1),a1 dbra d1,loop_copy lea -150(a1),a1 move.b (a0)+,d1 and.w #$f,d1 mulu #5,d1 lea digits(pc,d1.w),a2 moveq #4,d1 loop_or: move.b (a2)+,d2 lsr.b #4,d2 or.b d2,(a1) lea 30(a1),a1 dbra d1,loop_or lea -149(a1),a1 dbra d0,Display_BCD rts digits: dc.b %01000000 dc.b %10100000 dc.b %10100000 dc.b %10100000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %10100000 dc.b %00100000 dc.b %01000000 dc.b %11100000 dc.b %11000000 dc.b %00100000 dc.b %11000000 dc.b %00100000 dc.b %11000000 dc.b %10100000 dc.b %10100000 dc.b %11100000 dc.b %00100000 dc.b %00100000 dc.b %11100000 dc.b %10000000 dc.b %11000000 dc.b %00100000 dc.b %11000000 dc.b %01100000 dc.b %10000000 dc.b %11100000 dc.b %10100000 dc.b %11100000 dc.b %11100000 dc.b %00100000 dc.b %00100000 dc.b %01000000 dc.b %01000000 dc.b %01000000 dc.b %10100000 dc.b %01000000 dc.b %10100000 dc.b %01000000 dc.b %11100000 dc.b %10100000 dc.b %11100000 dc.b %00100000 dc.b %11000000 dc.b %01000000 dc.b %10100000 dc.b %11100000 dc.b %10100000 dc.b %10100000 dc.b %11000000 dc.b %10100000 dc.b %11000000 dc.b %10100000 dc.b %11000000 dc.b %11100000 dc.b %10000000 dc.b %10000000 dc.b %10000000 dc.b %11100000 dc.b %11000000 dc.b %10100000 dc.b %10100000 dc.b %10100000 dc.b %11000000 dc.b %11100000 dc.b %10000000 dc.b %11100000 dc.b %10000000 dc.b %11100000 dc.b %11100000 dc.b %10000000 dc.b %11100000 dc.b %10000000 dc.b %10000000