From 6d0a419af87182ddfea1c7956f8d7dda9bd8aec3 Mon Sep 17 00:00:00 2001 From: SaffronCR Date: Sat, 1 Feb 2020 14:13:31 +0100 Subject: [PATCH] Doing some tests with the start screen. Fixed tabs in files. --- art/bg.png | Bin 9588 -> 9622 bytes art/intro01.png | Bin 0 -> 5127 bytes art/strtscr.png | Bin 0 -> 4710 bytes dsk/bg.sf5 | Bin 27136 -> 27136 bytes dsk/intro01.sf5 | 1 + dsk/main.com | Bin 24616 -> 25185 bytes dsk/strtscr.sf5 | 1 + dungeon.c | 2 +- font.c | 218 +++++++++++++++++++++++++++-------------------- font.h | 2 +- generate_sf5.bat | 4 +- main.c | 14 +-- startscreen.c | 54 +++++++++--- 13 files changed, 184 insertions(+), 112 deletions(-) create mode 100644 art/intro01.png create mode 100644 art/strtscr.png create mode 100644 dsk/intro01.sf5 create mode 100644 dsk/strtscr.sf5 diff --git a/art/bg.png b/art/bg.png index 132f62c6c3806cba8ca66c330826a4208ecdd0c1..14e5662f7c6a36f4c6985f861b8be76cb0e047fe 100644 GIT binary patch delta 6958 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 aJ^yEie{ZJPEpR;8e+ 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 diff --git a/art/intro01.png b/art/intro01.png new file mode 100644 index 0000000000000000000000000000000000000000..47f36312a883c247b6f7e62250200847bfca9be5 GIT binary patch literal 5127 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 literal 0 HcmV?d00001 diff --git a/dsk/bg.sf5 b/dsk/bg.sf5 index 779b55e3e7622f2da84572faea399ae743d62945..34c49109fd0384fa02d4b04a434ea6c9265dfb45 100644 GIT binary patch delta 265 zcmZp;!q{+yaf4|bH~$9)2L2BWf`WpAlO5tpQTg#+leyxxx%vMyF#Lz9i7(~m|Ns9# zoFC^nnK8kX3natT*@`B6)VFr-XChtx!;se_V5(2w+^6oVM$z2)Bd?1H0Fn}G$0MegP#0T;Z bNC-rOg?uM>WU7jQxCmhoi($iLLwkDw^M+mW delta 167 zcmZp;!q{+yaf4~x#4PT~2Vxy2H^iAv)(YXC?2zOzDIU(8+z@X%F&nI6Qi9oJ?GP@I zg2@dDHj{0VTqY&jFf%YPOtz0bwwX1_gk@p@`{VN`CpV_+ vP8LlQ0<#%2bS5SXPd*UqKDj+ZZL(+@i0wF;F;iz^5`@{9sWUMH#B=}vx*tD= diff --git a/dsk/intro01.sf5 b/dsk/intro01.sf5 new file mode 100644 index 0000000..a309580 --- /dev/null +++ b/dsk/intro01.sf5 @@ -0,0 +1 @@ +"!#"3#3337ws3DA!!!!#23333t7s33."1#!!23#23377s33"""1"!!3#3#2337w3"3"""""">"""333373323.C33"2!2"3"!2""##3#3333"3DC332#34DA2!"#"""333333332sDC33"""#33wB"!!"#333333333377s3332""337tA"!""3#3"3337333wu53532"""3wtN!!"#2!7s33333x"33332#337wN""323333333s###233337wN5wwwwR22".333s377""3"#3s33~W{wuUUUU333UUUW[zs"""!33s3w2"""#3373>Wzwu3325S3SS3S5UU#UWw1"""#373ws5""3#337s>{wS3"#3333335""UUSUUUUw1""!!#s7wu55"#333ww~uU32"#3332"25""3U"UWX5uWz."""""733wuU2"337ww~U""3""33""""#!#S32#XWuWU~!!!2"!"7337uX"33ww~Q""""33"!"""""2#UuUzUW~"3#"#377x5x"3Www~#"!#32!"#"%U7W:[U(U""33""!#383x#5ww~2"!333!"#"%WUU2XuX[~#32""!33sx8#5w~"!2#2"#"5U7uS3UUUUX{#33""337X#Uw~2"!"""%75%3U2%7U#32""!"3783W~!""5%uU#Q!"%UxX#32"!333xU"3>!""%wzX.XU#3""##3x#>.zS5uUxUX33"""337x>WWX3UUW.32""#37x8>!u*3u5sUUU[s32"#33X#r#u7|uUU~332!#338w!szUUUU[s3!!37w"S"q:!-ոZXUUUU|73"!"3sx>""#"""!]=}ۅ5S"UUU73r"!"#8xx"#""""#R#!rzܪzUUU5UR"+#3!!37x~""5""R"".".!+Ҽw]UUrUUUUR3|""!""w.""#%""".1Q߷uUUXUQQS}2""""(8~"!"."%U"""!#zu""uU32""]!!""#s"""".%%"""""R"7*ܳ""#S>#("!!"""3~""#R""%"%""""""W^2S""*R^%S!""""#~""22"""""U..""".!!.2#U"2""""#>"""""2"""""!"".wͳ.#US2#"}"""""#>""#""R2#""!"."".>.35U.1""R1""""#>##"U%US"""!""".⧵W3."!!!""""#>""""U%3UU2!"."!1X2U33.RQ5""""#>R#"""%U2%22#!".!!!Q>"#R."25="""""#>"5S."#3S2%5U"""!R."###"""""#>"%"""""RUUUR.""."!11"""""#>"3""%^".%UURR""!.>!'!#!>=""""#3>"""%>!""RRR""""."'..1.#3#>'1""""33~!"%R"%2"."2"""""Wq!!1"".1"1""""3w~""%^""."""""#"7#2.1=!""#3w~.!""Q".""!"""""...3q;!!"""3ww~""%^".!"2""S">22q21!!;"""37ww~""""!!"""#"">#r>t.1".#""""#47wt."""."""""!#1>U""C's!3A!""""""333ww.."""!""""!1.3">2"tD323s.R"12s""2"#3DD"""""2."Cr1#.:q!!.!1"#2"342.Dq!"""""!.#"C,:B3!~"33$DC"DG1..""""""^"#"3SDL12>7~.#"DGqA"!"""R"4E3!:C>R!"z~Dw~A2""22."!3837~>!""{!Dy~D"FA!.R"".#4393|..>1XGwND$IN"""1#"3D4NND|CzD!#1!GyBDiɞ"!""""C3A>'.'";It"FN".."""Dܑ!2*"DA"FN!""".!2"9I2-"3"2$#id."!RR"36͙̓#!"2"D$ifQ!".3<9ɒL2}8~!."!D$if%.1!..%"."$~Q"!AFidR#!}}yMԭ=(A&fA%"#">""~t=!"AFfn%.%3S!2ȂM̞#ݭAifNUUUSR"#.$=ݓyDiəf"!2"Mܑ͜D$fQ!!<<ܝ-A&idI~.>">ٝJlfA䙞U^""!.-}=&f晞O3A."Ff~!#}ݯѝ.A"idIw1!~zDAiA.ii1)M?~Aia!i1!=zGݔB!4fal!1#ݞ77}J!fffdAᙞl"!32*ݭIy¡"!FddA"~~q""I"FA!-ԝݡ""!Iq!IF!!..'sw횭|4DIi!!DA=ǭMO1ᙞlD3DGAt>NiN}Dt'DAG.FB>!DDNDMt}!AF!DA~AtMDLљ!FnI1ADG.i"A<}..-INDDDAsCNAMJDD}NLDDN}~AJDDA77LAtDD:A.MNDAMw2A=~DAMDADDAD~"!D.DDA.""DDDMݬ"".>DD}:r!""."".>"^""!""""!!""""!"""" \ No newline at end of file diff --git a/dsk/main.com b/dsk/main.com index 7ef14cf6108ac35003a847c7ff1a126e90b19a2f..9c80f4b7b5677f6de8a04ca3572a064361274030 100644 GIT binary patch delta 10201 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 J8NgHM3;-B23|zqʬ~<̪z̡:̪tA|ʪs3zʬ>7ܤ3L̪ʬ̬13z̩w3Lztz̬szwzǬGJzwzwzwAJttzD>CzzA7GwzzDzwzwsDJz3GDwwwwwwwzzt9w4C:wʪw4䙙ttDz74Jzs1wwJz}ݟzzzwwDٙ}ݜ|wzw4wtAJyqJwMݜzzzzwzwwGtDsA窪ݞ1Mݓ33113wzq>ݞzzM~Gszs:w3~ݞt3zwMݞw~1J>q4GJͬʬʤ:|ݞG7tMݙqG䙜ətwzܪtwzGszݞ7MٙyٗIݙٔz̪tJwwwݞMݝ|ݓݙsDJzzzAٙMz3twyݞݙqw|̡w1zJ̪wLyّMݜDsݞ>:w3zJDGwzGG1yݙMݙDݞNz̡wwzwz1>w3w1DDəݙݙwݓ>zwzwzw31~w1qݟǡIݑݙ3z|zwtGztᪧDwDNݚ~ݙݞMݙ4Jw51:̚ww~ݜ7wݙݑݙ̧qDDtz:GDzzݜwݗݙ1AC44DGDAܡݙݓ>}ݑzwwDʬʪAt̬̪www~>Iݙݞ~ݔzzʪʪ4tGq11tCDD>癙ݙIݔIٔyyݔJzzwsA1ʪqJ̪tA113:9NyٙɝݞݔJwDDG:̪:wttGzz̡33Gww9ٙٙwAٙݙyJwwzA1D̪zwwCAwzt4:̧̪ztyG7wwwsGG~JwzwwwtwtwttwtGzwDwzܧyDtzGGGwDAC̗CJt7wJzwAwwwwwDACw7tJǧtGCG1Dw1GwzwwNDDzwsDt4NDw4D4JC:̧wA7t4A4DDGs4wC37zw7q1z~Dwwzwzww1wwzwJwwDADwqzJJwzAJ̪wt4tA1DAGwtqDC3z1qGw7C:|̧~A3Dʪ11zG13wwwt3wDGwGJwJzwtDzwwADzwJsJwNwz1Dszqwt1twGtDG:q1G37qD17IwCJw4GwDDwtDtwwwwAzCGJwwzJwztwwGwts4wwDsDGwDJDD3:D̡̬4JGtwswzwJCtwttwtGwJGzwt4zs4wwwGAwwAwtJGzGtwzDwwzwsGtDJJwJw13:ADĢ43wq4t>zzwswCGwstDwttDDDDD3JDGG:DtqG3GwGtqwswGwwzDDDtDDDG7GwDDND̪ADt37wGw>wzwwzwzwDGwAG4GDDGADDDwwDw31zAJtDwwtGtw1wwwwz>DwtJDDJDDCGwwwzDGGzDGw7Gtwt41~qCDJwwwwwwwwwzADDDDADDDwwDwDD䙗w>yt:zJwDwtwqw1w>qwGDJJwtDwwwzDDzzDwwDDDztGw1tDwwwwGwwwzwwDDDD>DDGwCDw19NIGztGwwtAGwDDttJDDJGDwDtDtJtJDwwzwGGtwzAADtDDJzGC1Dt~CDGztDw9ݙݚi~wzwADDA:wGttJwwwA3JzDDDqDGDDGtGDtJzDwwwwzD1DzA4wDDADݙtݙwJtDwtwwwwtwwz>3DAGJDDtwzwwzDDAGD7zDGݗsݙt>wJAGzJt~1GzGwwzGzwwzDݙCqݞAᙙ11qtI~3wz11~A᪪twzAݙtNyݙzٙٙLNy~ᙝٗ~yIəqwzAzw>zD3ّz~ٞݙNٙݙ~>ٙٞݙݙݗGwztzzwwDݔٞIݞgəݞٙٙqwݟ:wzGGzDݗ>9ٗwwwy9ݞ}ݞݗ:Mݜ1ݙtz1wwwz~AwzzwDzAݙItݗt>ݞwsDtNݗݔzݙI7Mٗ1ٙݔtɝݙ7wzwNww3GG~>ǧݙ9w~MٙDٙLݞ71sqwwzNGzswzC~wٙzݙCٔw~MNqw}ݙ:s~ݗw>tqG7qwwJzA~wtݜ>}ٙtMݞM~ݙJyItJqwzwwAA~AKݙ>}>NٜAGMݞݗ=ݙ1ݙݙJw3Dw4>7NٔyNٔzM~ݙGIݔIsDw1ݙٗwwD1wCJ1ݔݚٗwzMٞݙ9ݑݙCٙwN>Az1Tqݔ~əٙٝwz:9ٝݙݔ㙝ݙݗٙݙDA~A4wtADwtwiz7w4GwwٞݙLɑ䙙s䙙y3wwzJqwt4s13373G>MICqwzz~wwzzzGGDG1C3wzD47wCDMItDwzztwwwAswwwNGDDCDsDDDGstAݙGtwAGwtwwwzAGwA4JDzGwzDDwAtADwwwwwIݜ~tGwzzwA~wJtKwtJwGC>{7ݑ4DGCwNLqD1wܣzݙt|t4Gq>JìݙIݗ3|zJq1<Aw7̧DDC|qܬʪzǮ \ No newline at end of file diff --git a/dungeon.c b/dungeon.c index 09397d0..730722b 100644 --- a/dungeon.c +++ b/dungeon.c @@ -462,7 +462,7 @@ void sf_set_dungeon_state(void) // Generate dungeon. Cls(); - sf_draw_text("Entering the old ruins...", 8, 8, 15, 0); + sf_draw_text("Entering the Underruins...", 8, 8, 15, 0); db_state = ReadyToSwitch; dungeon_map = NULL; diff --git a/font.c b/font.c index 828bfa5..87f791d 100644 --- a/font.c +++ b/font.c @@ -159,108 +159,140 @@ #define exclax 0+8+8+8 #define exclay 172 +// Textbox +#define uplbx 16+8+8+8+8+8+8+8+8+8 +#define uplby 204 +#define uprbx 16+8+8+8+8+8+8+8+8+8+8+8 +#define uprby 204 +#define dwnlbx 16+8+8+8+8+8+8+8+8+8+8+8 +#define dwnlby 188 +#define dwnrbx 16+8+8+8+8+8+8+8+8+8+8+8+8 +#define dwnrby 188 +#define midbx 16+8+8+8+8+8+8+8+8+8+8 +#define midby 204 +#define latbx 16+8+8+8+8+8+8+8+8+8+8+8+8 +#define latby 204 + + + void sf_draw_char(char character, int x, int y, char log_op) { - switch (character) - { - case 'a': sf_screen_copy(lax,lay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'b': sf_screen_copy(lbx,lby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'c': sf_screen_copy(lcx,lcy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'd': sf_screen_copy(ldx,ldy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'e': sf_screen_copy(lex,ley, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'f': sf_screen_copy(lfx,lfy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'g': sf_screen_copy(lgx,lgy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'h': sf_screen_copy(lhx,lhy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'i': sf_screen_copy(lix,liy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'j': sf_screen_copy(ljx,ljy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'k': sf_screen_copy(lkx,lky, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'l': sf_screen_copy(llx,lly, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'm': sf_screen_copy(lmx,lmy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'n': sf_screen_copy(lnx,lny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'o': sf_screen_copy(lox,loy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'p': sf_screen_copy(lpx,lpy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'q': sf_screen_copy(lqx,lqy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'r': sf_screen_copy(lrx,lry, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 's': sf_screen_copy(lsx,lsy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 't': sf_screen_copy(ltx,lty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'u': sf_screen_copy(lux,luy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'v': sf_screen_copy(lvx,lvy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'w': sf_screen_copy(lwx,lwy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'x': sf_screen_copy(lxx,lxy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'y': sf_screen_copy(lyx,lyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'z': sf_screen_copy(lzx,lzy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + switch (character) + { + case 'a': sf_screen_copy(lax,lay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'b': sf_screen_copy(lbx,lby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'c': sf_screen_copy(lcx,lcy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'd': sf_screen_copy(ldx,ldy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'e': sf_screen_copy(lex,ley, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'f': sf_screen_copy(lfx,lfy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'g': sf_screen_copy(lgx,lgy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'h': sf_screen_copy(lhx,lhy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'i': sf_screen_copy(lix,liy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'j': sf_screen_copy(ljx,ljy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'k': sf_screen_copy(lkx,lky, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'l': sf_screen_copy(llx,lly, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'm': sf_screen_copy(lmx,lmy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'n': sf_screen_copy(lnx,lny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'o': sf_screen_copy(lox,loy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'p': sf_screen_copy(lpx,lpy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'q': sf_screen_copy(lqx,lqy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'r': sf_screen_copy(lrx,lry, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 's': sf_screen_copy(lsx,lsy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 't': sf_screen_copy(ltx,lty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'u': sf_screen_copy(lux,luy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'v': sf_screen_copy(lvx,lvy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'w': sf_screen_copy(lwx,lwy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'x': sf_screen_copy(lxx,lxy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'y': sf_screen_copy(lyx,lyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'z': sf_screen_copy(lzx,lzy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'A': sf_screen_copy(uax,uay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'B': sf_screen_copy(ubx,uby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'C': sf_screen_copy(ucx,ucy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'D': sf_screen_copy(udx,udy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'E': sf_screen_copy(uex,uey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'F': sf_screen_copy(ufx,ufy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'G': sf_screen_copy(ugx,ugy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'H': sf_screen_copy(uhx,uhy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'I': sf_screen_copy(uix,uiy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'J': sf_screen_copy(ujx,ujy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'K': sf_screen_copy(ukx,uky, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'L': sf_screen_copy(ulx,uly, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'M': sf_screen_copy(umx,umy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'N': sf_screen_copy(unx,uny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'O': sf_screen_copy(uox,uoy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'P': sf_screen_copy(upx,upy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'Q': sf_screen_copy(uqx,uqy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'R': sf_screen_copy(urx,ury, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'S': sf_screen_copy(usx,usy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'T': sf_screen_copy(utx,uty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'U': sf_screen_copy(uux,uuy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'V': sf_screen_copy(uvx,uvy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'W': sf_screen_copy(uwx,uwy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'X': sf_screen_copy(uxx,uxy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'Y': sf_screen_copy(uyx,uyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case 'Z': sf_screen_copy(uzx,uzy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'A': sf_screen_copy(uax,uay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'B': sf_screen_copy(ubx,uby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'C': sf_screen_copy(ucx,ucy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'D': sf_screen_copy(udx,udy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'E': sf_screen_copy(uex,uey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'F': sf_screen_copy(ufx,ufy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'G': sf_screen_copy(ugx,ugy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'H': sf_screen_copy(uhx,uhy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'I': sf_screen_copy(uix,uiy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'J': sf_screen_copy(ujx,ujy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'K': sf_screen_copy(ukx,uky, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'L': sf_screen_copy(ulx,uly, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'M': sf_screen_copy(umx,umy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'N': sf_screen_copy(unx,uny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'O': sf_screen_copy(uox,uoy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'P': sf_screen_copy(upx,upy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'Q': sf_screen_copy(uqx,uqy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'R': sf_screen_copy(urx,ury, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'S': sf_screen_copy(usx,usy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'T': sf_screen_copy(utx,uty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'U': sf_screen_copy(uux,uuy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'V': sf_screen_copy(uvx,uvy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'W': sf_screen_copy(uwx,uwy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'X': sf_screen_copy(uxx,uxy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'Y': sf_screen_copy(uyx,uyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case 'Z': sf_screen_copy(uzx,uzy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '0': sf_screen_copy(zerox,zeroy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '1': sf_screen_copy(onex,oney, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '2': sf_screen_copy(twox,twoy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '3': sf_screen_copy(threex,threey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '4': sf_screen_copy(fourx,foury, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '5': sf_screen_copy(fivex,fivey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '6': sf_screen_copy(sixx,sixy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '7': sf_screen_copy(sevenx,seveny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '8': sf_screen_copy(eightx,eighty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '9': sf_screen_copy(ninex,niney, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '0': sf_screen_copy(zerox,zeroy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '1': sf_screen_copy(onex,oney, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '2': sf_screen_copy(twox,twoy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '3': sf_screen_copy(threex,threey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '4': sf_screen_copy(fourx,foury, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '5': sf_screen_copy(fivex,fivey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '6': sf_screen_copy(sixx,sixy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '7': sf_screen_copy(sevenx,seveny, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '8': sf_screen_copy(eightx,eighty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '9': sf_screen_copy(ninex,niney, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case ' ': sf_screen_copy(spacex,spacey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '!': sf_screen_copy(exclax,exclay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '^': sf_screen_copy(heartx,hearty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - case '@': sf_screen_copy(copyx,copyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; - } + case ' ': sf_screen_copy(spacex,spacey, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '!': sf_screen_copy(exclax,exclay, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '^': sf_screen_copy(heartx,hearty, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '@': sf_screen_copy(copyx,copyy, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + + case '<': sf_screen_copy(uplbx,uplby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '[': sf_screen_copy(dwnlbx,dwnlby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '_': sf_screen_copy(midbx,midby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '>': sf_screen_copy(uprbx,uprby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case ']': sf_screen_copy(dwnrbx,dwnrby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + case '|': sf_screen_copy(latbx,latby, FONT_SIZE_X,FONT_SIZE_Y, x,y, FONT_PAGE, back_page, log_op); break; + } } void sf_draw_text(char *text, int x, int y, char text_color, char border_color) { - char log_op = LOGICAL_IMP; + char log_op = LOGICAL_IMP; - while (*text) - { - if (border_color != 0) - { - // Color border, original color (white) text. - LMMV(x, y + back_page * 256, FONT_SIZE_X, FONT_SIZE_Y, 16-border_color, LOGICAL_IMP); - sf_draw_char(*text, x, y, LOGICAL_TIMP); - } - else if (text_color == 0) - { - // Transparent border, original color (white) text. - sf_draw_char(*text, x, y, LOGICAL_IMP); - } - else - { - // Transparent border, color text. - LMMV(x, y + back_page * 256, FONT_SIZE_X, FONT_SIZE_Y, 15-text_color, LOGICAL_IMP); - sf_draw_char(*text, x, y, LOGICAL_XOR); - sf_draw_char(*text, x, y, LOGICAL_AND); - } + while (*text) + { + if (border_color != 0) + { + // Color border. + LMMV(x, y + back_page * 256, FONT_SIZE_X, FONT_SIZE_Y, border_color, LOGICAL_IMP); + sf_draw_char(*text, x, y, LOGICAL_TIMP); - text++; - x += FONT_SIZE_X; - } + // Only for color text. + if (text_color != 0) + { + LMMV(x, y + back_page * 256, FONT_SIZE_X, FONT_SIZE_Y, 15-text_color, LOGICAL_IMP); + sf_draw_char(*text, x, y, LOGICAL_XOR); + sf_draw_char(*text, x, y, LOGICAL_AND); + } + } + else + { + // Transparent border. + sf_draw_char(*text, x, y, LOGICAL_IMP); + + // Only for color text. + if (text_color != 0) + { + LMMV(x, y + back_page * 256, FONT_SIZE_X, FONT_SIZE_Y, 15-text_color, LOGICAL_IMP); + sf_draw_char(*text, x, y, LOGICAL_XOR); + sf_draw_char(*text, x, y, LOGICAL_AND); + } + } + + text++; + x += FONT_SIZE_X; + } } diff --git a/font.h b/font.h index 14e2fd1..e559410 100644 --- a/font.h +++ b/font.h @@ -11,6 +11,6 @@ // Prototypes. //------------------------------------------------------------------ -void sf_draw_text(char *text, int x, int y, char border_color, char text_color); +void sf_draw_text(char *text, int x, int y, char text_color, char border_color); #endif diff --git a/generate_sf5.bat b/generate_sf5.bat index 3341ffa..3d6cefe 100644 --- a/generate_sf5.bat +++ b/generate_sf5.bat @@ -1,3 +1,5 @@ @echo off img2sf5 ./art/bg.png ./dsk/bg.sf5 -img2sf5 ./art/walls.png ./dsk/walls.sf5 \ No newline at end of file +img2sf5 ./art/walls.png ./dsk/walls.sf5 +img2sf5 ./art/strtscr.png ./dsk/strtscr.sf5 +img2sf5 ./art/intro01.png ./dsk/intro01.sf5 \ No newline at end of file diff --git a/main.c b/main.c index b14ea98..a8a499b 100644 --- a/main.c +++ b/main.c @@ -260,7 +260,7 @@ void sf_blit_screen(void) back_page = !back_page; SetDisplayPage(!back_page); - SetActivePage(back_page); + SetActivePage(back_page); db_state = Finished; } @@ -286,7 +286,7 @@ void sf_set_game_state(char new_state) switch(game_state) { case StartScreen: sf_set_startscreen_state(); break; - case Dungeon: sf_set_dungeon_state(); break; + case Dungeon: sf_set_dungeon_state(); break; } } @@ -295,9 +295,9 @@ void main(void) { // If MSX is Turbo-R Switch CPU to Z80 Mode. if(ReadMSXtype() == 3) - { + { ChangeCPU(0); - } + } // Init random. srand(rand_seed); @@ -329,7 +329,9 @@ void main(void) // Load screens. SetSC5Palette((Palette *)palette); sf_load_sf5_image("BG.SF5", 256 * SPRITES_PAGE, load_buffer); - sf_load_sf5_image("WALLS.SF5", 256 * WALLS_PAGE, load_buffer); + sf_load_sf5_image("intro01.SF5", 256 * 0, load_buffer); + //sf_load_sf5_image("STRTSCR.SF5", 256 * 0, load_buffer); + //sf_load_sf5_image("WALLS.SF5", 256 * WALLS_PAGE, load_buffer); // Set interrupt. InitInterruptHandler(); @@ -352,7 +354,7 @@ void main(void) switch (game_state) { case StartScreen: sf_update_startscreen_state(); break; - case Dungeon: sf_update_dungeon_state(); break; + case Dungeon: sf_update_dungeon_state(); break; } } } diff --git a/startscreen.c b/startscreen.c index a0af525..6776cac 100644 --- a/startscreen.c +++ b/startscreen.c @@ -17,21 +17,55 @@ void sf_draw_startscreen_intro_text(void) { // Intro text. - db_state = Updating; - Cls(); - SetColors(0, 0, 0); - sf_draw_text("@SAFFRON SOFT 2020", 8*6, 100, 2, 0); - // PutText(0, 90, "********************************", LOGICAL_IMP); - db_state = ReadyToSwitch; - sf_wait(200); + db_state = Updating; + // Cls(); + SetColors(0, 0, 14); - // Go to dungeon state. - sf_set_game_state(Dungeon); + sf_draw_text("Deep in space far away", 8*4, 8*19, 15, 14); + sf_draw_text("from the inhabited regions", 8*3, 8*19+9, 15, 14); + sf_draw_text("of the galaxy lies a long", 8*3, 8*19+9+9, 15, 14); + sf_draw_text("forgotten alien station", 8*3, 8*19+9+9+9, 15, 14); + + // sf_draw_text("PRESS SPACE KEY", 8*8, 8*18, 15, 14); + // sf_draw_text("@2020 SAFFRON SOFT", 8*7, 8*24, 15, 14); + + //sf_draw_text("@SAFFRON SOFT 2020", 8*6, 100, 2, 0); + // PutText(0, 90, "********************************", LOGICAL_IMP); +/* + sf_draw_text("<______________>", 8*6, 70, 8, 0); + sf_draw_text("| |", 8*6, 70+8, 8, 0); + sf_draw_text("[______________]", 8*6, 70+8+8, 8, 0); + sf_draw_text("SAFFRON SOFT", 8*6+8+8, 70+8, 15, 0); +*/ + +/* + sf_draw_text("<_____COMMAND_____>", 8*6, 8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8+8+8+8+8, 13, 14); + sf_draw_text("| |", 8*6, 8+8+8+8+8+8+8+8+8+8, 13, 14); + sf_draw_text("[_________________]", 8*6, 8+8+8+8+8+8+8+8+8+8+8, 13, 14); + + sf_draw_text("^TALK SPELL", 8*6+8, 8+8+8+8, 15, 14); + sf_draw_text("STATUS ITEM", 8*6+8+8, 8+8+8+8+8+8, 15, 14); + sf_draw_text("EQUIP TACTICS", 8*6+8+8, 8+8+8+8+8+8+8+8, 15, 14); + sf_draw_text("DOOR SEARCH", 8*6+8+8, 8+8+8+8+8+8+8+8+8+8, 15, 14); +*/ + + db_state = ReadyToSwitch; + sf_wait(1000); + + // Go to dungeon state. + sf_set_game_state(Dungeon); } void sf_set_startscreen_state(void) { - sf_draw_startscreen_intro_text(); + sf_draw_startscreen_intro_text(); } void sf_update_startscreen_state(void)