Is MSX a good platform for beginner programmer/game dev?

Pagina 1/4
| 2 | 3 | 4

Door syn

Prophet (2113)

afbeelding van syn

24-08-2010, 19:50

Ive been interested in programming and game development ever since i got my first msx. Back then I was a young 8 year old kid, who didnt had the confidence he could ever make games. When I got older I started having more hobbies besides the (at the time slowly dying) MSX, so I lost interest. But now I am back interested in game development and I want to try make my own games.

I know this is not easy. It will be a long time before I make anything playable and I will need to take small steps at a time (something like this looks like a nice path). Nevertheless feel its a great time to start learning, because there is a big library of information out there called the internet. (back in my msx days i only had a msx-basic guide writter for kids (iirc it described FOR - NEXT loop as a prince and princess, i remember as a kid typing the example from that book and being disapointed no prince or princess appeared on screen)

Ultimately I want to make action-platformers like castlevania, metroid, valis or shooters like aleste/laydock. Or maybe a 2d fighting game like streetfighter/king of fighters but that would be a LOT of work on other platforms, and maybe not possible at all on MSX.

Step 1 of learning to program/develop games is ofcourse choosing a platform and language. Ofcourse in this current PC/Console era the most logical step is C++ /windows, but I am more interested in programming on older consoles. Why? Because I love old graphics more (sometimes I boot up neo geo/psx emulator and drool at the paralax scrolling). To me, sprites and bitmaps are so much more beautiful than models and textures. Chip/fm synthesis sound better then cd recording of some rock group. Also making graphics at 256x212 sounds a bit less time consuming than 1920*1080.

So this leaves me with 3 platform choices

1) MSX:
why? Because it was my first love :D Mainly because I like the sound and feel of the old msx games. Making a game for the msx would be like fullfilling a childhood dream, or at least toy around with the hardware (especially one with near maxed out specs: msx 2+ with fmpac/music module/scc and maybe v9990 and 7mhz upgrade even). Releasing a game would feel like giving something back to the msx for giving me so much fun when i was younger.

2) Neo Geo:
why? Imho the best popular 16bit console out there. Able to display and animate big sprites on screen (I read somewhere that everything on screen is made out of sprites.. no bitmap/patterns..amazing). The neo geo collector scene is cool too. Also the Neo Geo is flooded with great 2d fighters and has a number of great shooters but don't seem to have a lot of decent platform games, a gap I hope to fill someday. Problem may be that afaik there arent any megaromflash cartridges on it (but ill be developing in emulator at first anyway since I dont have a neo)

3) Dreamcast:
why? I think the most underrated console of all time. Great 2d capabilities.. maybe best of the 480p generation consoles (more videoram then the ps2, and i have no interest in developing for gamecube/xbox original)? Also c++ compiler available so maybe easier to start with? Making a game for DC is nice because this console still has a decent fanbase and releasing games will prove the sony/nintendo fanboys that it isnt dead yet :D

Since this is msx forum, my question is, would you advice a beginner to start on MSX (assembly)? I have some programming experience in MSX Basic as a kid, and at school I have had tiny bits of QBasic (I made a chatprogram using com port with 2 pc's linked..) , Cobol (made some small assignment I cant remember what it was.. some database ish thingy), and some scripting stuff.

So would you say MSX (assembly) is good choice to start? Or is it way above my league?

Aangemeld of registreer om reacties te plaatsen

Van JohnHassink

Ambassador (5655)

afbeelding van JohnHassink

24-08-2010, 20:08

A lot of professional programmers started out on the MSX, so I'd say, yeah, it's an excellent basis!

Don't know how much you already have 'fondled around' with MSX-BASIC, but it's a good language to start understand things like program structures, variables, arrays, subroutines etc.

If you want to get a step higher regarding programming language as well as results, you could switch to C.

If you want to get really close to the machine, you could study the MSX assembly language, but that's quite specialistic (since every assembly language depends on and differs with the platform itself) so you can become an ASM expert on MSX but as far as I know it won't do you much good on other platforms than MSX.

If you master C, you can develop on any platform.
You'd still have to implement platform-specific ASM code in your C program though, but IMO that's less of a hassle than doing the entire thing in ASM - something I'd myself would not even consider for a second. Wink

Van Edwin

Paragon (1182)

afbeelding van Edwin

24-08-2010, 22:41

Demonseed is a bit pessimistic, but makes a good point. The big choice you want to make first is whether you want to try assembly. Whether that's within your league is hard to say. It's not about experience but about how well you can cope with the high levels of abstraction needed to make something in assembly.

However, assembly does actually transfer quite well to other platforms. This is because it's not the language you learn (the sum of things to know is actually quite small), it's your frame of mind that you're training. When you master z80 assembly, you can actually do other cpu's in minutes.

Personally I think that MSX would be the best if you want to do assembly. If you want to do C++, forget msx Wink Plain C is possible, but as easy on msx as you might think. To make something good will still require some knowledge of hardware and assembly.

Van Huey

Prophet (2694)

afbeelding van Huey

24-08-2010, 23:04

MSX is a fun platform to make games on. But please try to be realistic when starting.
It takes experience to make metriod, castlevania and aleste like games.

Take it once step at a time and see at what level you are. From there on you can start increasing your skills.

Perhaps a good place to see what others are making is the MSXdev competition (link). All levels of game making are present there.

I personally started on ASM a few months ago with assembly and it is really fun once you get the hang of it.

Van syn

Prophet (2113)

afbeelding van syn

24-08-2010, 23:55

I have done small 3-4 programming projects in various languages during my study business information technologies (a studie not aimed at programming, more business analysis like and buidling databases. programming projects was just to make us understand the concept behind it), over the course of a year i think, so I have basic understanding of all what you said. Though I have never done it I think i have enough understanding of it to be able to make a small game in msx basic. But the reason I dont want to do it in basic because it seems slow on msx. But from what I read /see on youtube the gfx9000 and the future VSU basic can be pretty fast. Come to think of it my MSX2+ is the sanyo wavy... iirc it had some basic compiler build in.. maybe i reconnect my msx sometimes to see if I can get any decent results.

I do want to get close to the machine. I feel its part of developing. Getting real close to the hardware, trying to squeeze out whatever juice is in it. Most current games dont seem to push the limit of the systems like the old 8-16 bit era games do. For example compare first neo geo games and to the last few games . they are really pushing the hardware with the later ones. Or the last few games on Megadrive/SNES. I hope to reach such level someday on the platform I choose to work on (maybe in 10 years.. if there are still working MSX'es around by then Big smile ). So yeah I think i would want to learn assembly, but at the same time C or C++ sound good as well (for future job/resume etc also for when i decide to make something for windows)

I didnt knew there was a C compiler for MSX? This makes it more interesting to pick msx then.. Since C is predecesor of C++ i would think ultimately switching to C++ from C wont be that difficult from what I can tell from reading on the internet. Maybe try learn C and assembly simultaniously? Also if you say mastering "one assembly" you can switch to another one rather easy, that makes learning on msx even more interesting!

@Huey: dont worry I know my first game isnt going to be a space manbow/sd snatcher-like classic. I have played/studied videogames long enough to know it is a lot of work, and making games you need to take into account controls, AI, hitboxes/coalition detection, animation, movement.. what happens if something hits etc.. and then we havent even looked into the graphics and sound yet! It is the knowledge that it takes this much work that I never started making games in the first place!

Anyway what is ASM? I thought it was just short for assembly? but you mention learning ASM combined with assembly?

I think I will start learning assembly on MSX Big smile around this time next year i have a small demo of a simple game for you Big smile

Van RetroTechie

Paragon (1563)

afbeelding van RetroTechie

25-08-2010, 02:21

Nice GameDev link you provided, it has some good advice. There's many angles to game development, because it may involve many different skills:

  • Math: boolean logic, data structures, sort algorithms, etc, etc. Hard, 'boring' & very necessary.
  • General programming: breaking problems down into small pieces, loops, subroutines, timing, input/output, file access etc.
  • Getting to know the particular platform you're coding on.
  • Project management: keeping track of files / changes / versions / 'releases' etc.
  • Documentation, both in your code, user documentation, and (if you publish anything) on web pages.
  • If you ever get to 'commercial' stuff: distribution / selling / bug tracking / user support.

For each of those, you can start as easy & simple as you wish. Once I coded a simple text-based 'avoid the stars while you travel down in your spaceship' BASIC game in under an hour, just because it annoyed me I had such a game on the ZX81 once, and not on the MSX (while knowing how easy it should be to write)... Tongue I suggest you ask yourself: why? Then take those answers, and for each of those answers, ask again: why? And so forth. Then think about how important each of those reasons are (=motivation). When you've mapped that out (on paper or in your head), it'll be much clearer what you're hoping to get out of it, and -following from that- what you need. For whatever platform you pick, make sure it's:

  • Easy to get into / get some first results (no matter how small).
  • Short/quick feedback between code changes & seeing the result of those changes.
  • Foolproof / safe to go wrong (not need a lengthy restart if you code something stupid).
  • Well documented, homebrew-friendly, lots of existing code and/or ready-to-use building blocks (most consoles score badly on this).
  • Preferably free/open, so that if you ever make something popular, it's easy to get your stuff out into the world, and you don't need anyone's permission to distribute your work (again, consoles score badly here).

MSX is good for many of the above, but for example its limited raw power can be a double-edged sword: it'll teach you to make the most out of that hardware, and think in terms of performance/efficiency. Which is very useful, but also utterly irrelevant on modern platforms, where easy readable & maintainable code is preferred. On the MSX you can code in BASIC, Z80 assembly, C, Pascal or even Forth. And mix/match some of those as desired. But apart from C none of those languages are relevant anymore (so won't get you a job or impress anyone if you put on your CV). And you'd be coding for a 25+ year old system that has few users these days. Also BASIC, assembly (or even C) may not be good 1st languages. That is: teach you some bad habits (see eg. "GO TO considered harmful" )... More modern platforms/languages like Squeak, Lua, Pygame or Java may better suit your needs... :-?

Van Marq

Champion (387)

afbeelding van Marq

25-08-2010, 07:49

Here's some other pointers: http://www.kameli.net/lt/devel.html

Van MäSäXi

Paragon (1884)

afbeelding van MäSäXi

25-08-2010, 12:16

Hello syn! Smile I have just very (msx-)BASIC knowledge Wink and even there are now some similar answers already here, I just wanted to advise you, that when you start to learn enough assembler and/or C, just make sure you try to program some VERY SIMPLE game for your first game! Smile And when I say VERY SIMPLE, I really mean that! Smile

Do not afraid to use monochrome sprites or tiles with just 2 or 3 colours in them, make some SIMPLE single-/flipscreen platform or maze game where you "just" collect everything, or whatever. That way you could make and actually FINISH your first game. I just wanted to warn you, that do not try to make too much for the first time, to prevent bad frustration and boredom while you still are learning to program on MSX, which can cause that you don´t want to finish your MSX game never ever. And you may leave MSX forever....

When you have finished your first game, you can then use it as "a prototype", and think what could be better or what went wrong when you was programming. You can then make it better afterwards, polish it´s graphics and sound or start a new game after that and make it look and feel much better. Smile And YOU feel better too as you have succeeded to make playable MSX game! Smile

Van Tanni

Hero (556)

afbeelding van Tanni

25-08-2010, 13:35

Hi syn! Seconding all what the other posters and especially MäSäXi have said, I too would recommend you to start out very simple: You can use an emulator with MSX1 machine. By easily changing the emulation speed, debugging is somewhat easier. If you aren't already experienced in programming, don't go too deep into BASIC, especially if you aim at games. (That doesn't mean that you should compleatly discard BASIC, but BASIC is very hard to learn compared to other languages like e.g. Pascal.) As I'm a fan of Turbo Pascal, I would recommend you that language for MSX. It aimes at beginners in programming, is very fast, both in compiling and generated code, and easy to use. For small projects, you also can compile in memory, so it feels almost like an interpreter. It leads you to a good programming style. And you easily can do inline stuff. Don't be afraid to learn other languages as well, the basic concepts behind them are quite similar.

Van edoz

Prophet (2465)

afbeelding van edoz

25-08-2010, 15:43

I also want to learn programming an msx machine. I can write programs in Visualbasic (dotnet) 2008/2010, thats is easy for me because that's one of the things i'm doning during work..
I write soms 'basic' msx basic programs on the msx for fun. And i think i can understand the listings if there not a lot of peek and pokes.
So i have looked to ML.. but that's to hard for me because i don't understand totaly nothing about it. C looks also little to complex to me.. i don't understand it but i can read it more than ML.
I looked also to turbo pascal and i think that's better to begin for me.. it's readable and i like the object way of programming. But if i begin writing programs in pascal can i also write programs for turbo-r or moonsound and gfx9000 ? It's not where to begin, i know, but if i want to do it after a year for example, is it possible ?

Van Tanni

Hero (556)

afbeelding van Tanni

25-08-2010, 18:55

Hello edoz,

I used Turbo Pascal for many years on an MSX1 (and still use it on blueMSX emulator). It is possible to run it on an MSX2 machine, but TP editor only knows of 40 characters per line. In the programs, you can switch to 80 columns easily. (Maybe there's a patched version of TP to support 80 columns in the editor, but I'm used to 40 characters per line, because it's better to read. I upto now only use the TP I originally bought from Borland back then.) I never checked it out on a Turbo R machine, but I think it should be possible. If you have an emulator, you can check it out. I never had a gfx9000 nor could afford it back then, so don't ask me. I don't know anything about gfx9000 programming, but I think it will use some ports, see map.grauw.nl/resources/msx_io_ports.php to be programmed. So, in essence, all you have to do is reading/writing to some ports. That can easily be done with inline code using IN and OUT instructions. Of course you need to know the port numbers and the the meaning of the bits or the codes you have to send for the various things you want to achieve. But you first should do the first step and learn to code small programms. The rest comes on the way. If you provide your e-mail address, I will help you as much as I can. You can get some small TP-progamms to toy around with and some basic (not BASIC) routines to access several MSX BIOS routines from Pascal. These are also a good exemple for inline code usage.
BTW, Turbo Pascal 3.0 isn't object oriented. Object oriented TP is only for PC, as far as I know.

map.grauw.nl/

pascal.hansotten.com/index.php?page=msx-and-pascal

pascal.hansotten.com/

Pagina 1/4
| 2 | 3 | 4