Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - [Coding Competition 2023] Artfull by Z80ASMprogrammer2022

Reply to topic

Rate this entry!

1 (Terrible) 0% 0%
2 0% 0%
3 5% 5%
4 11% 11%
5 27% 27%
6 16% 16%
7 33% 33%
8 5% 5%
9 (Excellent) 0% 0%
This poll has expired.
Author Message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14687
  • Location: London
Reply with quote
[Coding Competition 2023] Artfull by Z80ASMprogrammer2022
Post Posted: Mon Mar 27, 2023 10:43 am
Last edited by Maxim on Mon Mar 27, 2023 5:18 pm; edited 1 time in total
https://www.smspower.org/Homebrew/Artfull-SMS





Quote
Artfull is an original Sega Master System game. It is recommended to read the manual before playing the game. Two human players, player 1 and player 2 referred to as P1 and P2 in the game,take alternate turns as the artist and guesser (the guesser player). The artists sends graphical commands (in the MergeDraw programming language) to draw the desired object (known only to the artist). The guesser must guess the desired object to win a point. A clue of

the type of object e.g. “creature” is shown at the bottom of image.If the guesser is correct a point is awarded. One game consists of 4 points (i.e. each player must draw 2 images each). At the end of the game player with most points wins. Players either: draw over pre-selected images to express the associated object (or phrase) , draw an image entirely from scratch where the object to be drawn is noted on paper (referred to as “on your paper” in the game) beforehand. This is a human only game-in other words there is no vs CPU player.-the (Master System) console is used like a “game board” (a bit like if 2 human players are playing computer generated chess board to use a random game example) but the important difference here is a the console is essential to be used as the “board” ; unlike chess there isn’t an non-electronic version of this game because its based on programming on an electronic console . The number of blue counters and red counter show the score for player 1 and 2 respectively. The score is also shown below the image after every point played for. Though the game is based on programming it is designed to be fun to play so even non- programmers can program without maybe knowing!

At the moment the game is a Two-Mega Cartridge which means it has enough images/art works for three unique games (four images are required for one game) -which is enough to experience what the game is like to play for the drawing over art work mode. Having 15 images (which requires a two-Mega cartridge to store) does not have an impact on the mode where you draw all the images entirely. The code is designed so it can be expanded to accept up to 512 images (though it would have taken a long time -many days past the 27.3.23 deadline-to do all 512 images) and with 512 images it would be a Four-Mega Cartridge since each image takes 8K memory.

The game is coded to make good use of the Sega Master System Hardware in the following ways:

*It uses nearly all the graphical tiles to show the colour works of art and an easy to use well presented game GUI/MergeDraw programming GUI.

*It uses the fact that the Sega Master System is a console that does not have high resolution colour

clash (not true for all Z80 based computers) this allows to draw over existing images as the player expects without colour clash artifacts.

*It uses the Sega Master System’s built in feature to have a up to Four-Mega cartridge without any extra mapping hardware which works fast enough (accessing the memory past the 64K limit) to draw over the images in real time where needs be. The generous Four-Mega Limit (provided already by the console) means there is plenty of space not to use compression and actually it is required not to use compression (for the curious-I tried compressed and Z80 ASM decompressed images and that turned out to be too slow) . Instead the images are paged in (past the 64K limit) on the ROM and then drawn over (which is quicker than reading from loading the image into VRAM then accessing VRAM to draw over it). The game uses paging in slot 2 and two uncompressed full colour 8K images are stored in each 16K page-any commercial flash cartridge has slot 2 paging i.e. no custom mapper chip is required (not true for all z80 based system cartridge games).

Tested and working with MEKA 0.80 Alpha.
  View user's profile Send private message Visit poster's website
  • Joined: 31 Dec 2022
  • Posts: 28
Reply with quote
Nice
Post Posted: Mon Mar 27, 2023 2:40 pm
A nice original game concept with original music /eye catching graphics. Also your source code is quite interesting-well done Z8AP. (I like how the title screen animation represents the game).
  View user's profile Send private message
  • Joined: 07 Mar 2021
  • Posts: 55
Reply with quote
Post Posted: Tue Mar 28, 2023 9:59 am
We are here on something very conceptual. I read the manual, very complete, concerning the game we feel the will that the console be pushed to its limits with the rewriting of tiles.

A little too much maybe because I can't get the game to work on emulicious, and on fusion I think I have problems with the directional keys.

My console is still in cardboard since my demanagement I can't test it on real hardware, I'll try as soon as possible !
  View user's profile Send private message
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Artfull ROM updated
Post Posted: Thu Mar 30, 2023 1:06 am
Last edited by Z80ASMprogrammer2022 on Thu Mar 30, 2023 1:25 am; edited 1 time in total
Hi,

"and on fusion I think I have problems with the directional keys."

It works fine on Kega Fusion 3.64 ,game uses both pads,some keypress commands need a few seconds to enter for holding down their keys. It also works fine Freeze emulator.
  View user's profile Send private message
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Artfull ROM updated
Post Posted: Thu Mar 30, 2023 1:15 am
"A little too much maybe because I can't get the game to work on emulicious,"

The updated ROM is attached to this message.
Because I have updated the game code so it considers the way the VDP is accessed in the Master System (reading the relevant Master
System documentation) and if I am not mistaken Emulicious
considers this VDP timing too in its emulation.
So it is expected to work on Emulicious because this updated version
considers this VDP timing but I haven't tested the updated ROM on Emulicious.


Programming this game was a bit like programming two cartridge
softwares meshed together or combined into one game because it has a language interpreter inside a game. So this is one reason the manual is so complete.
For me it was an obvious idea to enter a code interpreter based
game for a coding competition entry.Because I am interested in
interpreter coding and game coding.

  View user's profile Send private message
  • Joined: 07 Mar 2021
  • Posts: 55
Reply with quote
Post Posted: Thu Mar 30, 2023 1:08 pm
Thank you for the adaptation !

Yes the game now launches on emulicious! Indeed, launching into an interpreted language on Master System is not easy, this game is the demonstration that it can work. There is a lot of work here and that's something we've rarely seen on our console.
  View user's profile Send private message
  • Joined: 28 Mar 2022
  • Posts: 18
  • Location: UK
Reply with quote
Post Posted: Thu Mar 30, 2023 1:54 pm
That 1.1 version also fixes it on my Master System 1, which is nice.
  View user's profile Send private message Visit poster's website
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Post Posted: Thu Mar 30, 2023 2:12 pm
Yesterzine wrote
That 1.1 version also fixes it on my Master System 1, which is nice.
Hi,what brand or model of flash cart did you use with your master system 1?
  View user's profile Send private message
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Update. Artfull ROM version 1.2.
Post Posted: Thu Mar 30, 2023 5:14 pm
This version 1.2 is a minor update to the game.
The game plays two songs in random sequence on the title
screen over a few minutes. But sometimes depending on how
a specific emulator initialises the memory it may sound like there
is only one song playing on repeat on the title screen.
This song issue is fixed in this version 1.2 so hence the music
sounds more interesting by playing two different songs
in random order on the title screen over a few minutes.

  View user's profile Send private message
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Update webpage request
Post Posted: Fri Mar 31, 2023 10:59 am
Hi Maxim or Bock or an Admin,

Can you update the page

https://www.smspower.org/Homebrew/Artfull-SMS

for my game so its zip includes the latest version of the ROM.

The attachment to this message contains the updated zip file

and it is the same as the old zip file Artfull-SMS-1.00.zip

except that is has the updated version 1.2 of the Artfull

ROM instead.
Artfull-SMS-1.2.zip (249.57 KB)

  View user's profile Send private message
  • Joined: 06 Mar 2022
  • Posts: 596
  • Location: London, UK
Reply with quote
Post Posted: Fri Mar 31, 2023 11:38 am
Wow, what an ambitious project this is, well done Z80AsmProgrammer!

I'm reminded of Logo of course, which takes me back to school days in front of a BBC Micro.

Such a novel idea to turn effectively an art program into a game. It's quite a steep learning curve, and the manual helps. After some time sat down with this I'm just getting used to the commands and controls.

Personally I am enjoying just making drawings on blank paper, rather than playing it like a game. Even that is quite challenging given the somewhat restricted drawing tools, and strangely addictive.

I think improvements could be made around the controls - I find the choice of whether to use D-pad or buttons for various actions a little unintuitive, despite the help text on screen; and when selecting tools the controls feel a little unresponsive, as if the pads are not being polled very regularly so sometimes I skip past the thing I'm looking for and have to go round the menu again. Is the menu in alphabetical order? I think it could be ordered a little more based on user intentions - for example I have to go past End Repeat before I can get to Repeat. Also, kind of minor, but I am always forgetting that Semi-circle is in the same menu as Circle rather than being separate!

Also I would dearly love an Undo tool, as making a mistake currently means starting over. I guess it should be possible, since the "program" redraws from scratch every time a command is added?

Haven't looked at the source yet, but I will put some time aside to because I'm very interested in the exercise of writing an interpreted language for this system, it's a fun idea indeed!
  View user's profile Send private message Visit poster's website
  • Joined: 28 Mar 2022
  • Posts: 18
  • Location: UK
Reply with quote
Post Posted: Fri Mar 31, 2023 12:01 pm
Z80ASMprogrammer2022 wrote
Yesterzine wrote
That 1.1 version also fixes it on my Master System 1, which is nice.
Hi,what brand or model of flash cart did you use with your master system 1?


It's this aliexpress knock off.

https://www.aliexpress.com/item/4000530409396.html?spm=a2g0o.order_list.order_li...
  View user's profile Send private message Visit poster's website
  • Joined: 21 Jan 2023
  • Posts: 22
Reply with quote
Post Posted: Sat Apr 01, 2023 7:56 am
Last edited by Z80ASMprogrammer2022 on Sat Apr 01, 2023 8:37 am; edited 4 times in total
"I'm reminded of Logo of course, which takes me back to school days in front of a BBC Micro."

Part of one of the rules of this coding competition is copyright infringement is not allowed.
MergeDraw is not Logo (otherwise that may be considered as copyright infringement).
Some of the main differences between MergeDraw and Logo are as follows in red bullet points below:



* First note the fact the semi-circle and circle commands (the curve type commands) in MergeDraw are not perfect looking semi-circle or circles, I could have made them look more like circle or semi-circles, but in MergeDraw approximate images are good enough as I mentioned below-which is why the MergeDraw circle and MergeDraw semicircle commands are actually approximations to a circle and semi-circle shape. The menu in MergeDraw can be changed to write the word approximate before circle or semi-circle but I think the menu in MergeDraw is clear enough without using the work approximate here for gamers (non-programmers).
The specific , in their shape, (approximate) semi-circle commands and (approximate) circle commands built into MergeDraw (as part of it’s specification) are not found built into Logo (or the version of Logo I used as a reference).It probably related to the fact there is no single z80 CPU instruction (for sine or cosine). For one example, to illustrate what I mean, the version of Logo for the speccy does not have a built in circle command though one can be defined to give perfect looking circles on the speccy see the Logo manual for the speccy here

https://worldofspectrum.net/pub/sinclair/games-info/l/Logo_1-TurtleGraphics.pdf

though that wasn’t the example I used as a reference but it still it proves my point.
Or instead to draw a semicircle or circle in Logo you can just use a sine or cosine function to plot it’s pixels. Logo (or the version of Logo I used as a reference) does not have a built in command that gives the specific curve type commands used in MergeDraw. It requires less thought and effort to draw a curve (just needs to specify a constant from 0 to 7) in MergeDraw as it is aimed at games(non-programmers) and the curve commands are built into MergeDraw. An idea of MergeDraw is to express most thing a player will want draw for the game and as an approximate image is good enough for guessing the phrase-it is NOT intended to be a rich or as fully featured as Logo which allows for easier control of pixel plotting based functions.

• MergeDraw draws over an existing artwork (in the game mode) and Logo draws over a blank
paper to start with. In programming mode for MergeDraw a grid can be toggled off or on
to help visualize a potential image to be drawn over. Drawing over an existing artwork
is not part of the Language specification of Logo. Drawing over a picture or a grid of points is a specification of the Mergedraw programming language.

• In Logo the angle direction of the pen can be changes relatively from the current point of drawing (this is part of the Logo specification); in MergeDraw there is no such relative angle change in direction (not part of the MergeDraw language specification.).

*There are no variables (or arithmetic operators) spelled out in MergeDraw (e.g. x=some value) and there is not the possibility to use variables or functions in MergeDraw. This is because MergeDraw is aimed at gamers (non-programmers) and function or variables (e.g. x=some value) are not part of the MergeDraw specification. Logo (as part of its specification) allows the use of variables, arithmetic operators.

*There are no way to make decisions (follows from there being no variables in MergeDraw). This is because MergeDraw is aimed at gamers (non-programmers) and so there are no decision type commands in Mergedraw (part of its specification). Loga allows the “while” decision command as part of its specification.

*There are no procedures used in MergeDraw (part of its specification).But the breakdown of a program can be expressed in a different informal way in MergeDraw since three blocks of MergeDraw code can be put on each of the three MergeDraw pages by padding them out in between the pages with PENUP or PENDOWN. PENUP/PENDOWN has not effect on drawing if the pen is already up or down respectively. Logo allow the definition of procedures (this is part of the Logo language specification).

*There are fewer possible error messages that can be shown when interpreting a MergeDraw program and a Logo interpreter has the possibility to show more error messages (this follows from the fact the Logo has more features and a bigger vocabulary). This makes MergeDraw easier to learn than Logo as there are fewer things that an go wrong for example there are no error messages regarding variables for the gamer to think about. There are six error messages in the MergeDraw language specification.

* From an aesthetic point of view, their is no drawing turtle in Mergedraw but we have a hedgehog to do the drawing.

* While there are ,"left","right" commands in both Logo and Mergedraw these words would be considered obvious in a context of their use and copyright does not apply to obvious things like this (I don’t think “left”,”right” can be obviously named anything else here)


There is more technical differences between MergeDraw (e.g. the syntax for using circle commands) and Logo but there is enough differences to see that MergeDraw doesn't infringe on the copyright of Logo and is technically different from Logo. That said (the above in this message), I did not have Logo in my mind when I was creating the MergeDraw programming language and what I had in mind was creating the best graphical language for my game. Though I could see that if someone looked at MergeDraw without giving it too much though it may possibly be mistaken for Logo.
Another reason why I wanted to make sure that MergeDraw does not infringe copyright is that I was going to use it to write my own operating system from scratch (not using a known language) for the master system which boots into a high level language when the master system starts, so a bit like when a 8 bit computer/speccy boots into it’s and OS+basic when it is turned on. If I added a few commands/a bit more code to MergeDraw code it can be used as a operating system for the master system.


"challenging given the somewhat restricted drawing tools,"

Its restricted by the design of the MergeDraw programming language. Because MergeDraw is
aimed at gamers (non-programmers) having the smallest useful instruction is what I was aiming for
because having less instructions (minimal is better here) to remember makes for an easier to use programming language. Having fewer instructions also means the player sees less possible error messages therefore making mastering the language of MergeDraw easier (i.e. less thing can go wrong). From drawing a random sample of images myself,while designing the Mergedraw language, I found that I could boil it down to nine instructions that are used. You may think of MergeDraw as the answer to the following question:

What is one of the simplest interesting programming language a gamer (non-programmer) can understand that can get the idea of what programming is about across while being expressive enough to easily draw most thing (accurately enough) in the game ?

Summarized answer: it would be a language (with the minimal size useful instruction set) that is (gaming based) graphical , it has a minimal number of error messages it can show, it uses English word based commands,it can draw a selection of predefined curve type shapes, it can draw lines in four directions, and has no decision commands, has no variables,no procedures, no functions and with a non-nested loop construct would be my answer.
Logo is not my answer. "Can get the idea across" in the above question doesn't mean get the idea of everything about how a generic computer program can work (if that was the case the interested gamer could go and learn a generic language after playing Artfull).

You can think of MergeDraw as significantly below (in potential) of what possible with a well known generic programming language (e.g. C Sharp) and this step below in potential is a good thing. Artfull or MergeDraw can get an idea of what a computer program is and how a computer program works to a gamer (though they may not realize they are programming). You can think of Artfull or MergeDraw as an entry point in Mathematics or an entry point into programming only scratching the surfaces a little on these two topics.

"challenging given the somewhat restricted drawing tools,"

Another way to think about the restriction is that it would be quite easy for me to add plotting a pixel anywhere on the canvas by using the direction keys to select where the pixel is drawn then pressing a button to draw the pixel , and in this way anything can be easily drawn. But in that case we wouldn’t need MergeDraw in the game and the game would just become like a computer version of Pictionary/Charades and I think wouldn’t be interesting to play. Mergedraw is at the heart of what makes Artfull an interesting and unique game. You may describe Artfull as a bit like Pictionary but it is quite clearly different from Pictionary.

“for example I have to go past End Repeat before I can get to Repeat.”
That is intentional. It gives the potential to make a mistake for the non-programmer (gamer) therefore giving them learning feed back on how a loop structure works (that it doesn’t start with an End Repeat). Because the game assumes that the player knows absolutely nothing about programming.

“Also I would dearly love an Undo tool, as making a mistake currently means starting over. I guess it should be possible, since the "program" redraws from scratch every time a command is added?”

Having an undo tool makes the game too easy in my opinion. If the players decide to put a time limit on how long they can do a drawing for (for example 5 mins) having no undo puts pressure on the player to get the drawing right first time and encourages more accurate MergeDraw programming thought (which is something good to learn for a gamer or non-programmer). That said, in a future version, I’ll add a cheat code to enter on the title screen so it allows an undo that works in the way you describe above. Undo feature is not part of the MergeDraw specification.


“ as if the pads are not being polled very regularly so sometimes I skip past the thing I'm looking for and have to go round the menu again”

I’ll look into this but I didn’t notice this problem and that maybe because I played to so much to test it made me used to how the input works. I recall at one time during development the menu selection was too quick and I slowed it down. If there is a bug here I will fix it so I’ll look into it. Also I don’t keep hold of button one to select I just tap it quickly to select the next command. Also I do not have real hardware (a master system with a flash cartridge) to do the testing for my game and I don’t know if your above refers to real hardware or a specific master system emulator and in my experience some emulators run more smoothly than others. It there was a button three on the master system I could have used it for going backward in the menu but there are only two master system buttons (one and two) obviously; if there was three buttons near beside button 2 then this would also have an intuitive layout as the backwards and forwards button would be in the same area of the game pad .

“Is the menu in alphabetical order?”
No but it can be made to be put it alphabetical order and it is something I will do in a future version. It basically involves careful changes to the source code.

“Also, kind of minor, but I am always forgetting that Semi-circle is in the same menu as Circle rather than being separate!”
Ok , noted.Semi-circle can be changed to not be inside the circle menu option, this would need careful changes to the source code and take some time. Yes it is a minor thing that may be considered to add a bit of polish to the game so I’ll leave it till later to do. I put the semicircle option inside the circle option because geometrically a semicircle is related to a circle shape.
        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Post Posted: Sat Apr 01, 2023 8:00 am
      “Personally I am enjoying just making drawings on blank paper, rather than playing it like a game.”

      As Maxim wrote at

      https://www.smspower.org/forums/17792-Competitions2020?start=50


      “It is a coding competition, not a game competition. We are getting a lot of really polished entries but” the requirement is not to make a fun game, it is to write something that might be a game or a demo or a technical thing. It’s a bit hard to compare, but you are voting for the achievement, not the game quality per se.”

      So its nice to know you are enjoying using my software even though you are not playing it as a game. I mainly focused on the quality of my code as that is what the competitions judge.

      As Maxim wrote above “you are voting for the achievement” so I would say the achievements in my code include the following

      * It is an interpreter for an original coding language I created (which is MergeDraw) specifically for Artfull

      * and the interpreter for MergeDraw in coded in a unique, and non-obvious/novel way for significant part of it and this adds to the quality of the code. In the manual I describe roughly how it works (I left out a lot of fine details though) so a non-coder can appreciate the technical details too of the unique and novel interpreter algorithm.

      * Also this game is a coding first for the master system because to my knowledge there isn’t a custom high level language interpreter specifically designed for the master system that is part of a bona-fide master system game (or any software specifically created for the master system that is not a game)


      “Haven't looked at the source yet, but I will put some time aside to because I'm very interested in the exercise of writing an interpreted language for this system, it's a fun idea indeed!”

      The MergeDraw interpreter is a significant chunk of the game code-as I mentioned above, I was going to use the interpreter as a major part of my master system operating system.

      it's a fun idea indeed!”

      Have fun reading it!
        View user's profile Send private message
      • Joined: 06 Mar 2022
      • Posts: 596
      • Location: London, UK
      Reply with quote
      Post Posted: Sat Apr 01, 2023 9:00 am
      Thanks for the comprehensive replies!

      Although I'm not a lawyer, if it helps allay any fears I'm sure others would agree with me here that violating copyright of the design of a programming language is absolutely nothing you need to worry about at all here. Common consensus is usually that actual lines of code are subject to copyright (as are lines of text from a novel or poem, for example), and graphic designs and music are also subject to copyright, but ideas are not subject to copyright. They may well be subject to patents but software patents remain highly contentious. There was a famous high profile court case between Google and Oracle over Google's re-implementation of some of Java's API signatures, and although it took a very long time to settle, the US Supreme Court eventually ruled that it was Fair Use for Google to use the API signatures and in this sense compared it to the Dewey Decimal System for cataloguing library books.

      I think the fact that there are innumerable Logo variants and dialects from different companies and developers is probably proof enough that no one is worried about copyright violations.

      Anyway as you say MergeDraw is definitely not Logo and apologies if my drawing the comparison caused any stress - I only mentioned it because it reminded me of a good memory. In summary I would repeat if you are at all concerned about copyright law here you can probably rest easy about it.
        View user's profile Send private message Visit poster's website
      • Site Admin
      • Joined: 19 Oct 1999
      • Posts: 14687
      • Location: London
      Reply with quote
      Post Posted: Sat Apr 01, 2023 12:00 pm
      I think my SMS Chip-8 interpreter counts as an interpreter, it’s just not possible to enter new code at runtime. The core is an interpret/dispatch loop as you might expect.
        View user's profile Send private message Visit poster's website
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Post Posted: Sat Apr 01, 2023 2:36 pm
      "I think my SMS Chip-8 interpreter counts as an interpreter, it’s just not possible to enter new code at runtime. The core is an interpret/dispatch loop as you might expect."

      So Maxim your ROM software (from 2002) is the first to contain any sort of interpreter (a Chip-8 one) where this Chip-8 interpreter powers the games (collection) in your ROM and is specifically made for the master system.
      I like your Chip-8 based ROM and it is the first time I know about it right now and it is something (or something like this) I would buy if it was boxed and for sale.

      "The core is an interpret/dispatch loop as you might expect"

      Still I would be interested to know if Artfull is the first game software to contain a high level language interpreter for a new language (i,e. a custom interpreter) specifically designed for the Master System where the interpreter can take new code at runtime (as Artfull does through its GUI). As far as I know it is.
        View user's profile Send private message
      • Joined: 06 Mar 2022
      • Posts: 596
      • Location: London, UK
      Reply with quote
      Post Posted: Sat Apr 01, 2023 3:00 pm
      Benvyres has put a BBC BASIC interpreter on the Master System - see here, and reads like he used it to both enter programs via keyboard input and also bit-banged over an input port. Possibly others have done similar things with BASIC, it feels like a fairly obvious interpreted language to play with on this generation of hardware.

      In terms of a game for the Master System embedding an interpreted language as an element, I'd put good money on you being the first to do that @Z80ASM!

      P.S. @maxim Chip-8 is super fun; hadn't seen your interpreter before, definitely going to have a play!
        View user's profile Send private message Visit poster's website
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Update.Artfull ROM version 1.3; improved inputs and new undo feature.
      Post Posted: Mon Apr 03, 2023 12:29 am
      In this new attached version 1.3, following on from the (comprehensive) message for improvements of willbritton, the menu works more smoothly. The problem (not a bug) was there was an intentional delay (less than 1/2 a second) in the menu put in by me, but I didn't notice this delay was a problem (regarding responsiveness) from testing it so much I got used to it or it suited my reflexes.
      The delay was removed and replaced with code that certainly polls the game pads more regularly and moving through the menu is a bit quicker now. I tap the button quickly to select a MergeDraw command and not hold down the button to select a MergeDraw command. Also following from willbritton's message the menu has been put in Alphabetical order and the left key can now be pressed to go backwards in the menu (instead of going through the whole menu to simulate going backwards in the menu if needs be). There are now more (ten) menu items so a backwards key was added to move through the menu a bit quicker). The only possible key on player 1's gamepad that could have been used to go backward in the menu was the left key hence that was used for this.

      Following on from willbritton message an undo feature (for the last MergeDraw command entered) has been added which undoes/deletes the last MergeDraw command entered by simply pressing button 1 on the second game pad. The undo feature is actually a cheat which is activated by
      putting in a code using the title screen; but the code for this activation has not yet been done. So the undo feature is simply used by pressing button 1 on the second pad and no activation is required for the cheat. Also following from his message the semicircle command has its own entry separate from the circle command in the menu and at the same time it is still grouped together with the circle command in the old way.

      Summary of Changes Made for each version are as follows


      Version 1.1- Following the message from Guy the game was modified to consider video display processor/chip timings. Guy mentions this version launches/works on Emulicious. This version works on real hardware as mentioned in the message from Yesterzine.
      Version 1.2- Has a fix so that two songs are played in random order on the title screen over a few minutes for certain possible memory initilisation settings from some emulator.
      Version 1.3 -Following comments from willbritton an undo, for last MergeDraw command, was added and from his comments the game input has been improved: MergeDraw command selection menu is more responsive/faster and in alphabetical order; the left key moves backwards in this menu. Also from his comments the semicircle command has its own separate entry in the menu.

        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      MergeDraw example: Rose
      Post Posted: Tue Apr 04, 2023 7:50 am
      The example above for the BBC basic uses custom non-commercial hardware (for keyboard input) for entering a BBC basic program (not everyone has the skills to build custom electronics for using an interpreted programming language. MergeDraw only uses standard master system hardware (such as hardware used with any commercial master system game) for program input.

      If it wasn't obvious: this cartridge can be used for just MergeDraw programming (instead of playing it as a game) just by selecting the "MERGEDRAW PROGRAMMING LANGUAGE" from the menu when the cartridge starts.

      This interesting example shows how to draw a representation of a rose.
      mergedrawrose.png (6.37 KB)
      mergedrawrose.png

        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Artfull ROM version 1.4; teams version with modified scoring system.
      Post Posted: Sun Apr 09, 2023 12:07 am
      Attached is version 1.4 of Artfull.

      The basic difference compared to previous version is the Artist does not award point to opponent but to the artist's team instead.


      Player's 1 is the blue team with score represented by the blue counters.
      Player's 2 is the red team with score represented by the red counters.

      In this version rules are tweaked so that it is played as a team game in this version-it is a team vs team version. So it needs 4 players as a minimum to play if there is 2 players on each team.

      One player,of each team, only knows the answer to draw and every player in the artist's teams looks away,if needs be, if the answer is displayed on screen. The opposing team stays silent but knows the
      answer since they don't need to look away from the screen. After the artist's team looks back at the screen a point is awarded to the artists team if the artist's team consequently correctly guesses the answer; the other team stays silent here while the artist's team attempt to guess the answer. The point is awarded by a designated person to be chosen before hand this can be a person who is not a player (i.e. not a member of any team) or it can be some person from the red team or blue team e.g. the current person being the artist.

      In the next turn the other team provides the next player to be the artist and similar to above the artist's team attempts to guess the answer while the other team stays silent. Teams alternate for providing the next player to be the artist.

      The main difference between this scoring system between this version 1.4 and version 1.3 is that,in version 1.3 it was a 1 player vs 1 player game and the point was awarded by the opposite player if the other player guessed correctly. In this version it is a team vs team game where the point is NOT awarded to the opposite player/opponent,but awarded to the team the artist is a member of (thus not the opponent).


      In this team version of the game there is a score to simply keep track of aggregate scores over a series of games (in both drawing over existing images or draw from scratch modes) since the console is turned on. We still use the old scoring system limit of 2 points maximum per game, per participant, but the scoring has been modified to use an aggregate counter over a series of games.The aggregate is of both types of drawing game modes. To reset the aggregate scores you need to turn the console off or on. The attached screenshot shows an example of the aggregate score on the title screen.

      This aggregate score gives an extra reason for the team players to achieve the highest score they can during a game (compared to version 1.3) The aggregate score is shown on the title screen after every game has finished. For example the aggregate score can be used for both teams to compete for the first team to try and get to 5 aggregate points.


      In version 1.3 (and earlier versions) I assumed each player plays fairly since I think most people will play fair to enjoying the game. However,in the specific scenario, of where a player is winning in version 1.3 they can make a bad drawing so the other player may lose-this isn't a fault in the game code it is because a person doesn't behave fairly. In this version 1.4 this possibility of an unfairly behaving player gaining an advantage is avoided with the modified scoring system and using a team of 2 members or more instead of one player.


      The new description of the game is also attached:

      Updatedwikidescriptiontext.txt

      which is an update regarding version 1.4 (the new description mentions team vs team) since the old wiki description (I can't edit) is not entirely accurate now.



      Also can an admim update the page

      https://www.smspower.org/Homebrew/Artfull-SMS

      for my game so its zip includes the lates versiom
      Artfull-SMS-1.4.zip
      attached to this message.




      Summary of Changes Made for each version are as follows

      Version 1.1- Following the message from Guy the game was modified to consider video display processor/chip timings. Guy mentions this version launches/works on Emulicious. This version works on real hardware as mentioned in the message from Yesterzine.
      Version 1.2- Has a fix so that two songs are played in random order on the title screen over a few minutes for certain possible memory initilisation settings from some emulator.
      Version 1.3 -Following comments from willbritton an undo, for last MergeDraw command, was added and from his comments the game input has been improved: MergeDraw command selection menu is more responsive/faster and in alphabetical order; the left key moves backwards in this menu. Also from his comments the semicircle command has its own separate entry in the menu.
      Version 1.4 -The game is now a team game for two teams where each team has 2 or more members. The game now has aggregate team scores shown on the title screen or after every game.
      Aggregate-score.png (45.38 KB)
      Aggregate-score.png
      Artfull-SMS-1.4.zip (258.6 KB)

        View user's profile Send private message
      • Joined: 06 Mar 2022
      • Posts: 596
      • Location: London, UK
      Reply with quote
      Post Posted: Mon Apr 10, 2023 11:00 pm
      Z80ASMprogrammer2022 wrote
      Also can an admim update the page

      https://www.smspower.org/Homebrew/Artfull-SMS

      for my game so its zip includes the lates versiom
      Artfull-SMS-1.4.zip
      attached to this message.

      Done - also updated description as requested.
        View user's profile Send private message Visit poster's website
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Video demonstrating aggregate score in Version 1.4
      Post Posted: Fri Apr 14, 2023 11:36 pm
      Last edited by Z80ASMprogrammer2022 on Fri Apr 14, 2023 11:44 pm; edited 1 time in total
      The short video attached to this message is of the emulated version 1.4 demonstrating the new aggregate score mode over two different types of games.
      In the first game it was 2-2 score in a draw over existing images game.
      Then a second game is played where the last point is the object ,treehouses (noted on paper), that is shown to be drawn.But only the trees are drawn (not the houses) so the game ends 2-1. Only the last point played in the second game is shown.
      Thus the aggregate score is 4-3 as shown in the video at 1 minutes and 4 seconds on the title screen.
      The most that can be scored in any one game is a 2-2 draw game.
      Hence the aggregate score was 2-2 before this second game was started.

        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      The other song on the title screen
      Post Posted: Fri Apr 14, 2023 11:43 pm
      Also the video attached to this message, of the version 1.4, lets you hear the second song on the title screen-if you can't wait for the first song to finish!

        View user's profile Send private message
      • Joined: 12 Oct 2015
      • Posts: 183
      • Location: Ireland
      Reply with quote
      Interesting idea
      Post Posted: Mon Apr 17, 2023 8:16 pm
      Interesting idea - thanks for sharing the ASM source code - well done
        View user's profile Send private message Visit poster's website
      • Joined: 12 Aug 2021
      • Posts: 73
      Reply with quote
      Post Posted: Wed Apr 19, 2023 10:54 am
      Right, I am a bit split about this entry.

      I think it's a really cool idea to make a picture-guessing game with its own interpreted programming language.
      The programming language itself works well as far as I could see, and I had fun making that little hedgehog draw a stick man over the existing picture!

      However, to get there was quite difficult for me. I really struggled with the controls.
      In my opinion, I think you could improve user-friendliness by going through some sort of menu system like so:
      - First select the programming line you want to modify, then validate
      - The list of commands shows up, select the command you want, then validate
      - The parameter value shows up, select your value, then validate


      Now here are a few technical issues I met while playing on real hardware (Master System 2):
      - The palette sometimes changes from the default one when I start the game. I am not sure why it happens, and it stays that way for the whole game.
      - Tilemap corruption on screen happens often (less in the newer versions, where it usually fixes itself after a short while, are you redrawing the tilemap every frame?)
      - It seems the CPU is always really busy with something to do, that makes the controls and the music go at an irregular speed, even if I do not move the controller at all.


      In summary:

      I think it's a really cool concept that is the sort of things I am into. In my opinion, the user interface needs to be a bit more user friendly, and I think some technical issues prevent the game from running smoothly.

      But I don't want to discourage you, this is really cool nonetheless, and the fact that it was all coded all in ASM is impressive to me! Well done!
        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Post Posted: Wed Apr 19, 2023 1:49 pm
      Hi,


      "The palette sometimes changes from the default one when I start the game. I am not sure why it happens, and it stays that way for the whole game."

      This problem does not appear in the emulator I tested it on.I don't own any Master System console to test it and I don't own a Master system flash cart. That said, I try a fix it for real hardware in a future version.
      In other words if I owned real hardware then the game would not have this palette problem.
      For now you will have to reset/power off/on the console until the correct palette appears (should not take a long time to see the correct palette).
      One of the main things for me is knowing that the game is playable on real hardware (which I think it should be because it worked on the emulators I played it on and at least Yesterzine mentioned it does). But the best I can do for now is test it on an emulator and build upon the code for a version that is known to work on real hardware for making a future version that doesn't require a reset to get the default palette . In other words it works on an emulator and real hardware (that is it doesn't work an an emulator only).


      "Tilemap corruption on screen happens often (less in the newer versions, where it usually fixes itself after a short while, are you redrawing the tilemap every frame?)"

      The main thing, I think,is that it "fixes itself" after a "short while" so in that connection the problem does not really exist because it gone after a "short while".
      Yes, this the speed can be changed (or optimisations done) so the screen is updated quicker or more at once- but it would take time to do. If I put tons of time into it, and making careful changes to the source code, I can make it so speed at which it "fixes itself" is almost/instantaneous compared as the "short while" mentioned above. A future version will have a faster speed for the "fixes itself" mentioned above but for now I think it works well enough (by that I mean the game is obviously playable and not broken-otherwise I would not have entered it in the competition).


      "It seems the CPU is always really busy with something to do, that makes the controls and the music go at an irregular speed, even if I do not move the controller at all."

      Yes, the CPU is splitting it's time between tasks -it's far from a trivial program to code in assembly language from scratch-as you can see from source code. The code is pushing the hardware or using the hardware as much as possible in different ways.
      With more time I could have made the music go at a regular enough speed but the change in speed in the music I think gives feedback, in a way, to some input by the player-so I left it in.But I didn't notice the music playing at an irregular speed when no input from the controller is happening (though I do not think that affects the game play) so I'll look into that further and attempt to recreate that scenario where it does happen.


      "However, to get there was quite difficult for me. I really struggled with the controls.
      In my opinion, I think you could improve user-friendliness by going through some sort of menu system like so:
      - First select the programming line you want to modify, then validate
      "The list of commands shows up, select the command you want, then validate"
      "The parameter value shows up, select your value, then validate"


      This is something I'll definitely consider for a future-it is an alternative point of view-you mention-of how to make input system for a programming language-a more visual type (I think you are describing) of input rather than the more textual input which is used as the current input method.So it something to consider adding to a future version to add to the menu as an option (choosing between the current input system and the more visual input system you describe).Note the instructions are in alphabetical order (implemented from willbritton's suggestion) so it is known where to look for the instruction to enter.

      To some reader what you mention above may sounds quick to do but when I think of the ASM code and modification required it would take some time to do. Personally, I find the controls easy to use, for inputting a MergeDraw program, but I think that is because from using them so much. Anyway I'll check the code again (already did it in a previous version) regarding the game's inputs and if there is a bug there then I will fix it.


      "- First select the programming line you want to modify, then validate"
      That's not the way the game is played though because modifying a specific, or arbitrary,line is not one of the rules of the game. Note that there is a cheat to undo the last instruction; the undo feature was requested above and works in the way suggested above by redrawing all the tiles that form the picture to be drawn over then drawing over that (the start over feature work similar but redraws all the tiles of picture to be drawn over only). Maybe I'll put you idea in as a cheat in a future version.
        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Potential custom interface
      Post Posted: Fri Apr 21, 2023 6:03 am
      Another different way to approach the user input is to use a custom hardware based method.This idea is used for the BBC basic on a Master System mentioned above where a PC keyboard is used with a custom interface.But I do not think it is a good idea to solely rely custom hardware because a user may not have the electronics skills to build custom hardware.

      In a future version I will make it so that Artfull, can use an another alternative method which is using a custom hardware based interface, for interfacing a standard input device such as a PC keyboard.

      Sometime this year, I have after July this year in mind, and in the future I will get some copies of this custom interface hardware made and giveaway for free the custom interface described above for the interested gamer playing on real hardware. In other words it will be sent through the post to you, for free, if you request the interface. So the interface will have a plastic case engraved with the Artfull logo on it (as shown in the style of the title screen artwork). I will upload circuit related files of the final product here and update the manual for it's details.But first I need to get a real master system for testing the interface after it's made.
      This giveaway depends on the level of interest in Artfull.

      The main way to enter the MergeDraw program will always be a Master System keypad and using no other custom hardware will always exist because the software assumes,at the minimum, that the player uses only standard (i.e. non-custom) sega hardware paddles. But the use of the optional custom hardware interface will be there for those players that are interested for it for real hardware.Personally, I think the current paddle input method works fine and this custom interface will add another option to this.
        View user's profile Send private message
      • Joined: 05 Sep 2021
      • Posts: 55
      Reply with quote
      Post Posted: Wed Apr 26, 2023 4:05 pm
      Hi Z80ASMprogrammer2022 ;)

      It's not my style of game but, my goodness, what a job and all in asm! It's great to share the source code. CONGRATULATIONS
        View user's profile Send private message
      • Joined: 21 Jan 2023
      • Posts: 22
      Reply with quote
      Post Posted: Wed Apr 26, 2023 4:54 pm
      Ricco59 wrote
      Hi Z80ASMprogrammer2022 ;)

      It's not my style of game but, my goodness, what a job and all in asm! It's great to share the source code. CONGRATULATIONS


      "It's not my style of game"
      If it wasn't obvious anyone reading this: the cartridge can be used for just MergeDraw programming (instead of playing it as a game) just by selecting the "MERGEDRAW PROGRAMMING LANGUAGE" from the menu from the start. In other words Artfull can be used as a non-game (just for MergeDraw programming).It's like having two ROMs in one ROM.

      So you don't like the style of the game then (based on a novel combination of a picture guessing game and a new programming language). I could have made a more standard style game but I wanted to do a new type of game that did not previously exist for the console with new technical achievements (mentioned above)-as I think that would be more interesting at least from a technical point of view.

      " what a job and all in asm! It's great to share the source code."
      One reason it is done in ASM for speed. I prefer ASM for speed.
        View user's profile Send private message
      Reply to topic



      Back to the top of this page

      Back to SMS Power!