From 46b2964348807a235adaf83e653865a8cbf2d2a1 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 14 Jul 2021 02:06:09 -0400 Subject: [PATCH] mist_hgr: some more graphics stuff --- games/mist_hgr/TODO | 15 +++ games/mist_hgr/graphics_mist/Makefile | 3 +- games/mist_hgr/graphics_mist/dock_n.vgi | 118 ++++++++++++++++++ games/mist_hgr/graphics_title/Makefile | 4 +- .../mist_hgr/graphics_title/book_closed_n.vgi | 35 ++++++ .../mist_hgr/graphics_title/m_book_inside.vgi | 15 +++ games/mist_hgr/graphics_title/m_link_book.vgi | 30 +++-- games/mist_hgr/leveldata_title.inc | 6 +- games/mist_hgr/link_book_mist_dock.s | 4 + games/mist_hgr/mist_island.s | 2 +- games/mist_hgr/mist_title.s | 15 +-- graphics/hgr/vgi/make_vgi_asm.c | 65 ++++++++-- 12 files changed, 277 insertions(+), 35 deletions(-) create mode 100644 games/mist_hgr/TODO create mode 100644 games/mist_hgr/graphics_mist/dock_n.vgi create mode 100644 games/mist_hgr/graphics_title/book_closed_n.vgi create mode 100644 games/mist_hgr/graphics_title/m_book_inside.vgi diff --git a/games/mist_hgr/TODO b/games/mist_hgr/TODO new file mode 100644 index 00000000..db4e8962 --- /dev/null +++ b/games/mist_hgr/TODO @@ -0,0 +1,15 @@ +HIRES TODO: + +turn arrows + +more graphics of course + +fast bresenham line/triangles +triangles that can cross 255 x border + +sync up the intro speeds + +sprite movie playing + +mockingboard on IIc + diff --git a/games/mist_hgr/graphics_mist/Makefile b/games/mist_hgr/graphics_mist/Makefile index 90652221..a46c252b 100644 --- a/games/mist_hgr/graphics_mist/Makefile +++ b/games/mist_hgr/graphics_mist/Makefile @@ -10,6 +10,7 @@ all: mist_graphics.inc mist_graphics.inc: \ todo.lzsa \ clock_s.lzsa \ + dock_n.lzsa \ spaceship_far_n.lzsa \ spaceship_door_n.lzsa # dock_n.lzsa dock_s.lzsa dock_e.lzsa dock_w.lzsa dock_w_open.lzsa \ @@ -55,7 +56,7 @@ mist_graphics.inc: \ # tower2_path_e.lzsa tower2_path_n.lzsa \ # pillar_cross.lzsa pillar_eye.lzsa pillar_snake.lzsa pillar_emu.lzsa \ # pillar_bug.lzsa pillar_anchor.lzsa pillar_arrow.lzsa pillar_leaf.lzsa - echo "dock_n_lzsa: .incbin \"todo.lzsa\"" > mist_graphics.inc + echo "dock_n_lzsa: .incbin \"dock_n.lzsa\"" > mist_graphics.inc echo "dock_s_lzsa: .incbin \"todo.lzsa\"" >> mist_graphics.inc echo "dock_e_lzsa: .incbin \"todo.lzsa\"" >> mist_graphics.inc echo "dock_w_lzsa: .incbin \"todo.lzsa\"" >> mist_graphics.inc diff --git a/games/mist_hgr/graphics_mist/dock_n.vgi b/games/mist_hgr/graphics_mist/dock_n.vgi new file mode 100644 index 00000000..5d11cd2c --- /dev/null +++ b/games/mist_hgr/graphics_mist/dock_n.vgi @@ -0,0 +1,118 @@ +; TODO +CLS 0xff ; white2 background +RECT 6 7 167 108 279 191 ; ocean +VTRI 1 39 20 30 80 97 ; left bg mountain +; gear +DRECT 0x41 0x41 142 50 171 62 ; sideways gear +LINE 0 142 50 171 50 ; top of sideways +FCIRC 2 130 54 16 ; big gear +CIRC 0 128 59 8 ; inner circle +RECT 3 3 113 48 117 52 ; notch1 +RECT 3 3 121 39 125 43 ; notch2 +RECT 0 0 130 38 133 43 ; notch3 +RECT 0 0 139 42 143 48 ; notch4 +RECT 0 0 144 48 148 56 ; notch5 +RECT 5 5 104 52 108 60 ; marker switch +LINE 0 98 59 98 56 ; fence1 +LINETO 110 52 +LINETO 133 53 +LINETO 142 54 +LINE 0 109 52 110 51 +; plateau +VTRI 5 95 61 78 102 95 ; left triangle +DRECT 0xA2 0xA2 97 60 191 130 ; main plateau +LINE 0 97 60 191 60 ; top of plateau +DRECT 0xA2 0xA2 188 95 214 127 ; right +VTRI 5 213 97 218 234 125 ; far right +; temple +RECT 2 2 0 60 71 95 ; purple base +DRECT 0x5d 0x54 62 60 71 95 ; edge +RECT 2 2 0 0 42 61 ; purple side +HTRI 2 70 61 40 61 42 ; purple side +LINE 0 41 39 0 26 ; base line +RECT 0 0 41 0 58 7 ; underhang +VTRI 0 41 19 41 58 7 ; underhang +DRECT 0x52 0x52 47 6 53 48 ; l pillar +DRECT 0x52 0x52 15 0 23 32 ; r pillar +VTRI 1 0 60 0 27 98 ; green triangle +; general darkness +RECT 4 4 0 97 146 191 ; general darkness +; steps +HTRI 7 117 101 110 124 141 ; bottom steps +LINE 7 116 119 136 119 ; bottom step +LINE 7 116 116 130 112 ; next step +RECT 7 7 103 74 142 82 ; upper white +HTRI 7 118 74 60 74 153 ; upper white +RECT 7 7 137 60 151 70 ; upper white +RECT 4 4 103 80 124 98 ; upper black +HTRI 4 146 81 81 98 124 ; upper black +HTRI 4 124 80 68 81 155 ; upper black +VTRI 4 150 93 137 159 81 ; upper black +LINE 4 123 80 123 74 ; railing +LINE 4 113 73 113 82 ; edge +LINE 4 113 74 138 67 ; edge +LINETO 143 70 +LINETO 152 64 +LINE 4 143 69 144 74 +; dock area +VTRI 1 97 107 19 106 132 ; green ness +VTRI 1 65 191 36 111 132 ; bottom green ness +HTRI 1 18 133 132 157 47 ; last green ness +DRECT 0xA8 0xAA 159 117 167 137 ; far pile +RECT 4 4 159 116 166 121 ; cap +DRECT 0xA8 0xAA 171 133 184 164 ; middle pile +RECT 4 4 172 128 185 136 ; cap +RECT 4 4 214 177 248 191 ; close cap +VTRI 4 225 172 215 245 178 ; close cap +VTRI 4 248 177 248 255 191 ; close cap +VTRI 5 115 126 66 116 191 ; left dock +RECT 5 5 116 125 160 191 ; center docl +VTRI 5 157 126 159 205 191 ; right dock +LINE 4 158 126 198 191 ; dock edge +; masts +VTRI 5 191 59 204 208 154 ; skinny mast +LINE 5 279 126 211 154 ; sideways mast +LINE 5 279 126 213 156 ; sideways mast +LINE 4 222 155 279 155 ; shadow +LINE 4 275 130 277 153 ; line +LINE 4 232 140 251 127 ; cable +LINETO 279 102 +LINE 5 212 112 268 191 ; tall mast +LINE 5 211 113 266 191 ; tall mast +LINE 4 210 112 263 191 ; tall mast +LINE 4 217 127 221 129 ; top ring +LINETO 226 124 +LINETO 223 123 +LINE 4 222 136 227 136 ; middle ring +LINETO 231 131 +LINE 4 241 162 245 163 ; bottom ring +LINETO 249 160 +LINETO 247 159 +; wall line +LINE 7 0 97 103 96 ; wall line +; door +LINE 7 0 141 13 135 ; door line +LINE 7 5 191 43 164 +LINE 5 0 105 17 105 ; door outline orange +LINETO 17 135 +LINETO 47 159 +LINETO 63 191 +LINE 7 0 104 17 104 ; door outline white +LINETO 16 135 +LINETO 46 159 +LINETO 62 191 +; planks +LINE 4 117 191 85 168 +LINE 4 160 191 95 153 +LINE 4 196 188 101 147 +LINE 4 184 170 107 142 +LINE 4 175 156 113 135 +LINE 4 165 139 122 127 +; shadows +;HTRI 4 142 152 163 178 77 ; tree shadow +; marker switch +RECT 7 7 147 104 155 113 ; box +RECT 5 5 148 105 154 112 ; woodgrain +VTRI 6 151 98 147 156 104 ; top +DRECT 0x4c 0x33 146 113 159 127 ; base +END diff --git a/games/mist_hgr/graphics_title/Makefile b/games/mist_hgr/graphics_title/Makefile index f9d1f544..b7906d2a 100644 --- a/games/mist_hgr/graphics_title/Makefile +++ b/games/mist_hgr/graphics_title/Makefile @@ -14,7 +14,7 @@ title_graphics.inc: \ m_title_m.lzsa m_title_y.lzsa m_title_s.lzsa m_title_t.lzsa \ fissure_stars.lzsa fissure_crescent.lzsa fissure.lzsa fissure2.lzsa \ fissure_book_small.lzsa fissure_book_big.lzsa \ - m_link_book.lzsa + m_link_book.lzsa book_closed_n.lzsa echo "cyan1_lzsa: .incbin \"cyan1.lzsa\"" > title_graphics.inc echo "cyan2_lzsa: .incbin \"cyan2.lzsa\"" >> title_graphics.inc echo "m_link_book_lzsa: .incbin \"m_link_book.lzsa\"" >> title_graphics.inc @@ -35,7 +35,7 @@ title_graphics.inc: \ echo "book_glow_lzsa: .incbin \"fissure_stars.lzsa\"" >> title_graphics.inc echo "book_ground_lzsa: .incbin \"fissure_stars.lzsa\"" >> title_graphics.inc echo "book_ground_n_lzsa: .incbin \"fissure_stars.lzsa\"" >> title_graphics.inc - echo "book_closed_n_lzsa: .incbin \"m_link_book.lzsa\"" >> title_graphics.inc + echo "book_closed_n_lzsa: .incbin \"book_closed_n.lzsa\"" >> title_graphics.inc #### diff --git a/games/mist_hgr/graphics_title/book_closed_n.vgi b/games/mist_hgr/graphics_title/book_closed_n.vgi new file mode 100644 index 00000000..a3e7b9e0 --- /dev/null +++ b/games/mist_hgr/graphics_title/book_closed_n.vgi @@ -0,0 +1,35 @@ +; MYST Book Closed +CLS 0x80 +RECT 7 7 84 6 195 186 ; glow +POINT 4 84 6 +POINT 4 196 6 +POINT 4 84 185 +POINT 4 196 185 +DRECT 0xa3 0xae 100 7 194 184 ; cover +RECT 4 4 86 8 110 184 ; spine +VTRI 5 91 10 87 94 184 ; spine rip +HTRI 5 107 8 7 12 86 ; left rip +HTRI 4 170 7 6 31 194 ; upper right tri +HTRI 4 171 183 157 181 195 ; lower right tri +LINE 4 119 82 119 68 ; M +LINETO 124 81 +LINETO 131 69 +LINETO 131 82 +LINE 4 141 68 145 76 ; Y +LINE 4 151 68 145 76 +LINETO 145 82 +LINE 4 167 71 165 68 ; S +LINETO 165 68 +LINETO 162 69 +LINETO 161 69 +LINETO 160 73 +LINETO 166 78 +LINETO 167 81 +LINETO 165 82 +LINETO 163 82 +LINETO 160 80 +LINE 4 176 71 176 68 ; T +LINETO 188 68 +LINETO 188 71 +LINE 4 181 68 182 82 +END diff --git a/games/mist_hgr/graphics_title/m_book_inside.vgi b/games/mist_hgr/graphics_title/m_book_inside.vgi new file mode 100644 index 00000000..cd771c68 --- /dev/null +++ b/games/mist_hgr/graphics_title/m_book_inside.vgi @@ -0,0 +1,15 @@ +; Path from Myst +CLS 0x80 ; black background +; TODO, rounded edges? +RECT 7 7 3 85 239 188 ; glow +; book +; link +RECT 7 7 161 40 227 91 ; sky +RECT 6 6 202 70 227 91 ; ocean +RECT 5 5 180 55 208 74 ; mountain +RECT 5 5 208 66 219 74 ; mountain +VTRI 5 180 55 176 182 66 ; mountain left +LINE 6 225 78 213 83 ; mast +LINETO 212 75 ; mast +LINE 0 226 85 214 68 ; mast +END diff --git a/games/mist_hgr/graphics_title/m_link_book.vgi b/games/mist_hgr/graphics_title/m_link_book.vgi index cd771c68..f8fd6189 100644 --- a/games/mist_hgr/graphics_title/m_link_book.vgi +++ b/games/mist_hgr/graphics_title/m_link_book.vgi @@ -1,15 +1,21 @@ -; Path from Myst -CLS 0x80 ; black background +; Open MYST book +;CLS 0x80 ; black background ; TODO, rounded edges? -RECT 7 7 3 85 239 188 ; glow +RECT 7 7 36 5 239 187 ; glow +POINT 4 36 5 +POINT 4 240 5 +POINT 4 36 186 +POINT 4 240 186 ; book -; link -RECT 7 7 161 40 227 91 ; sky -RECT 6 6 202 70 227 91 ; ocean -RECT 5 5 180 55 208 74 ; mountain -RECT 5 5 208 66 219 74 ; mountain -VTRI 5 180 55 176 182 66 ; mountain left -LINE 6 225 78 213 83 ; mast -LINETO 212 75 ; mast -LINE 0 226 85 214 68 ; mast +RECT 4 4 37 6 237 186 ; black +RECT 7 7 39 10 235 184 ; big pages +LINE 5 37 154 36 39 ; orange binding +HTRI 7 125 10 6 11 50 ; part turned page +LINE 5 140 182 44 178 ; part turned page +LINE 4 44 178 50 7 +LINE 5 50 7 142 10 +LINE 5 40 181 42 10 ; page edge +DRECT 0xAB 0xAE 139 10 149 183 ; crease +; link area +RECT 4 4 161 41 224 90 END diff --git a/games/mist_hgr/leveldata_title.inc b/games/mist_hgr/leveldata_title.inc index 7d19f010..7915a000 100644 --- a/games/mist_hgr/leveldata_title.inc +++ b/games/mist_hgr/leveldata_title.inc @@ -22,7 +22,7 @@ location0: .byte BG_NORTH ; only north bg .byte DIRECTION_N ; special exit .byte 16,24 ; special x - .byte 26,36 ; special y + .byte 104,144 ; special y .word get_mist_book-1 ; special function ; TITLE_BOOK_CLOSED -- myst linking book closed @@ -59,6 +59,6 @@ location2: .word $0000 ; west bg .byte BG_NORTH ; only north bg .byte DIRECTION_N ; special exit - .byte 22,33 ; special x - .byte 12,26 ; special y + .byte 23,34 ; special x + .byte 40,92 ; special y .word mist_link_book-1 ; special function diff --git a/games/mist_hgr/link_book_mist_dock.s b/games/mist_hgr/link_book_mist_dock.s index a70e1e97..abfa015c 100644 --- a/games/mist_hgr/link_book_mist_dock.s +++ b/games/mist_hgr/link_book_mist_dock.s @@ -16,6 +16,10 @@ skip_turn_off_music: ; clear screen + ; clear to black + lda #$80 + jsr BKGND0 + lda #0 sta clear_all_color+1 diff --git a/games/mist_hgr/mist_island.s b/games/mist_hgr/mist_island.s index b77bfe6d..644e4cec 100644 --- a/games/mist_hgr/mist_island.s +++ b/games/mist_hgr/mist_island.s @@ -61,7 +61,7 @@ mist_start: ; set up initial location - jsr change_location +; jsr change_location lda #1 sta CURSOR_VISIBLE ; visible at first diff --git a/games/mist_hgr/mist_title.s b/games/mist_hgr/mist_title.s index 6882719c..0ef03301 100644 --- a/games/mist_hgr/mist_title.s +++ b/games/mist_hgr/mist_title.s @@ -601,6 +601,12 @@ room_frame_no_oflo: jmp game_loop really_exit: + + ; clear to black +; lda #$80 +; jsr BKGND0 + + jmp end_level @@ -707,17 +713,8 @@ theme_music: .incbin "audio/theme.pt3" - - - - - ; click on book, plays theme - - - - ; FISSURE: I realized the momemnt narration1: diff --git a/graphics/hgr/vgi/make_vgi_asm.c b/graphics/hgr/vgi/make_vgi_asm.c index 120a7320..66641e6f 100644 --- a/graphics/hgr/vgi/make_vgi_asm.c +++ b/graphics/hgr/vgi/make_vgi_asm.c @@ -56,6 +56,8 @@ int main(int argc, char **argv) { int size=0; int skip=0; int mode=MODE_ASM; + int lastx=0,lasty=0,lastcolor=0; + int tempx,tempcolor; if (argc>1) { if ((argv[1][0]=='-') && (argv[1][1]=='b')) { @@ -191,6 +193,11 @@ int main(int argc, char **argv) { &color1, &x1,&y1); // printf(".byte $%02X,",(type<<4)|4); + + lastx=x1; + lasty=y1; + lastcolor=color1; + if (x1>255) { x1=x1&0xff; color1|=128; @@ -212,11 +219,44 @@ int main(int argc, char **argv) { // printf(".byte $%02X,",(type<<4)|3); // printf("$%02X,",x1); // printf("$%02X\n",y1); - output[0]=(type<<4)|3; - output[1]=x1; - output[2]=y1; - output_bytes(mode,output,3); - size+=3; + + tempx=lastx; + tempcolor=lastcolor; + + if (lastx>255) { + tempx=tempx&0xff; + tempcolor=tempcolor|128; + } + + if (x1>255) { + output[0]=(VGI_LINE_FAR<<4)|6; + output[1]=tempcolor; + output[2]=tempx; + output[3]=lasty; + output[4]=(x1&0xff); + output[5]=y1; + output_bytes(mode,output,6); + size+=6; +#if 0 + fprintf(stderr,"ADJUSTING %d %d %d %d %d %d\n", + output[0], + output[1], + output[2], + output[3], + output[4], + output[5]); +#endif + } + else { + output[0]=(type<<4)|3; + output[1]=x1; + output[2]=y1; + output_bytes(mode,output,3); + size+=3; + } + lastx=x1; + lasty=y1; + break; case VGI_DITHER_RECTANGLE: /* dithered rectangle */ @@ -330,10 +370,16 @@ int main(int argc, char **argv) { break; case VGI_LINE: /* line */ + case VGI_LINE_FAR: /* line far */ sscanf(buffer,"%*s %i %i %i %i %i", &color1, &x1,&y1,&x2,&y2); // printf(".byte $%02X,",(type<<4)|6); + + lastx=x2; + lasty=y2; + lastcolor=color1; + if (x1>255) { x1=x1&0xff; color1|=128; @@ -343,6 +389,11 @@ int main(int argc, char **argv) { // printf("$%02X,",y1); // printf("$%02X,",x2); // printf("$%02X\n",y2); + if (x2>255) { + type=VGI_LINE_FAR; + x2=x2&0xff; + } + output[0]=(type<<4)|6; output[1]=color1; output[2]=x1; @@ -353,7 +404,7 @@ int main(int argc, char **argv) { size+=6; break; - case VGI_LINE_FAR: /* line */ +#if 0 sscanf(buffer,"%*s %i %i %i %i %i", &color1, &x1,&y1,&x2,&y2); @@ -380,7 +431,7 @@ int main(int argc, char **argv) { output_bytes(mode,output,6); size+=6; break; - +#endif case VGI_END: /* end */ // printf(".byte $FF\n");