Difference between revisions of "Create my first program"

From MSX Game Library

(Create your project directory)
(Test template program)
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
Once you have [[install]]ed MSXgl, you can start creating your own project.
 +
 
== Test template program ==
 
== Test template program ==
  
First try to compile and run the template program:
+
To validate that your MSXgl [[install]]ation is correct and that you're ready to create your own project, first try to compile and run the <tt>template</tt> sample program:
* Go to <tt>MSXgl\projects\template</tt> (or <tt>template_msx2</tt> if you target MSX2 computer)
+
* Go to <tt>projects/template</tt> (or <tt>template_msx2</tt> if you target MSX2 computer)
* Execute <tt>build.bat</tt> (Windows) or <tt>./build.sh</tt> (Linux)
+
* Execute <tt>build.bat</tt> (Windows) or <tt>./build.sh</tt> (Linux & macOS)
* Go to <tt>MSXgl\projects\template\emul\rom</tt>, check if <tt>template.rom</tt> exists and try it on your MSX machine or emulator.
+
* Go to <tt>projects/template/emul/rom</tt>, check if <tt>template.rom</tt> exists and try it on your MSX machine or emulator.
  
''<u>Note</u>: If you have [[Install|configured an emulator path]] in <tt>MSXgl\projects\default_config.js</tt>, you can edit <tt>project_config.js</tt> and change "<tt>DoRun = false;</tt>" to "<tt>DoRun = true;</tt>" to allow auto-launch of the built program.''
+
''<u>Note</u>: If you have [[Install|configured an emulator path]] in <tt>projects/default_config.js</tt>, you can edit <tt>project_config.js</tt> and change "<tt>DoRun = false;</tt>" to "<tt>DoRun = true;</tt>" to allow auto-launch of the built program.''
  
 
== Create your project directory ==
 
== Create your project directory ==
Line 16: Line 18:
 
Rename <tt>template.c</tt> to <tt>mygame.c</tt>.
 
Rename <tt>template.c</tt> to <tt>mygame.c</tt>.
  
Your project directory should look like:
+
Your new project directory should look like:
{|
+
📁 MSXgl
|-
+
└─📁 projects
|<tt>📁 projects</tt> ||
+
  └─📁 mygame               Your project directory
|-
+
    ├─🗎 build.bat           Launch Build tool (Windows)
|<tt>└─📁 mygame</tt> || Your project directory
+
    ├─🗎 build.sh             Launch Build tool (Linux)
|-
+
    ├─🗎 msxgl_config.h       Library configuration
|<tt>&nbsp;&nbsp;├─ build.bat </tt>        || Launch Build tool (Windows)
+
    ├─🗎 '''mygame.c'''            Your program source code
|-
+
    └─🗎 project_config.js   Build tool configuration
|<tt>&nbsp;&nbsp;├─ build.sh</tt>          || Launch Build tool (Linux)
+
 
|-
+
''<u>Note</u>: If you prefer, you can use an [[alternative file layout]] to have the MSXgl directory inside your own project directory.''
|<tt>&nbsp;&nbsp;├─ msxgl_config.h</tt>    || Library configuration
 
|-
 
|<tt>&nbsp;&nbsp;├─ mygame.c</tt>          || Your program source code
 
|-
 
|<tt>&nbsp;&nbsp;└─ project_config.js</tt> || Build tool configuration
 
|}
 
  
 
== Setup Build Tool ==
 
== Setup Build Tool ==
Line 39: Line 35:
 
* Change <tt>ProjName</tt> to <tt>"mygame"</tt>.
 
* Change <tt>ProjName</tt> to <tt>"mygame"</tt>.
 
* Set <tt>Machine</tt> to the minimal version of MSX hardware you want to support for your program. Let's say <tt>"1"</tt> for {{MSX1}}.
 
* Set <tt>Machine</tt> to the minimal version of MSX hardware you want to support for your program. Let's say <tt>"1"</tt> for {{MSX1}}.
* Set <tt>Target</tt> to your target format. Let's say <tt>ROM_48K</tt> (ROM on page 0, 1 and 2 with page 1 & 2 selected at startup).
+
* Set <tt>Target</tt> to your [[target|target format]]. Let's say <tt>ROM_32K</tt> (cartridge with a 32 KB ROM visible by the CPU on page 1 and 2).
* If you have [[Install|configured an emulator path]] in <tt>MSXgl\projects\default_config.js</tt>, set <tt>DoRun</tt> to <tt>true</tt> to allow auto-launch (easier to test your program).
+
* If you have [[Install|configured an emulator path]] in <tt>projects/default_config.js</tt>, set <tt>DoRun</tt> to <tt>true</tt> to allow auto-launch (easier to test your program).
  
* Execute <tt>build.bat</tt>, check the <tt>emul\rom</tt> directory for <tt>mygame.rom</tt> and test it.
+
* Execute <tt>build.bat</tt>, check the <tt>emul/rom</tt> directory for <tt>mygame.rom</tt> and test it.
  
 
Many other build options can be defined in <tt>project_config.js</tt>. See the [[Build Tool|options list]].
 
Many other build options can be defined in <tt>project_config.js</tt>. See the [[Build Tool|options list]].
  
== Setup program ==
+
This is where you will be able to choose which MSX version your program is intended for (MSX 1, 2, 2+ or turbo R) and the [[Targets|type of program]] you want to create (MSX-DOS, BASIC binary, plain or mapped ROM).
 +
 
 +
== Setup library ==
 +
 
 +
The <tt>msxgl_config.h</tt> file contains many options to configure the library to better suit your needs.
  
* <tt>msxgl_config.h</tt>...
+
This configuration is especially useful to optimize your program and can be ignored at first.  
 +
It allows for example to define which screen modes you want to support for your program so that the library adapts accordingly.
  
 
== Change program content ==
 
== Change program content ==
  
TBC...
+
Here it all depends on the type of game you want to make.
 +
 
 +
The following example will show you all the steps required to create a program that moves a sprite over a background on an MSX1.
 +
In the <tt>projects/samples</tt> directory you'll find numerous [[samples|sample programs]] that will show you how to use MSXgl's various features for a variety of media.
 +
 
 +
[[category:WIP]]

Latest revision as of 23:05, 1 June 2024

Once you have installed MSXgl, you can start creating your own project.

Test template program

To validate that your MSXgl installation is correct and that you're ready to create your own project, first try to compile and run the template sample program:

  • Go to projects/template (or template_msx2 if you target MSX2 computer)
  • Execute build.bat (Windows) or ./build.sh (Linux & macOS)
  • Go to projects/template/emul/rom, check if template.rom exists and try it on your MSX machine or emulator.

Note: If you have configured an emulator path in projects/default_config.js, you can edit project_config.js and change "DoRun = false;" to "DoRun = true;" to allow auto-launch of the built program.

Create your project directory

Now that everything work well, let's create your own program.

You can sure start a new project from scratch, but for this example lets duplicate template (or template_msx2) directory, and rename it mygame.

Rename template.c to mygame.c.

Your new project directory should look like:

📁 MSXgl
└─📁 projects
  └─📁 mygame                Your project directory
    ├─🗎 build.bat            Launch Build tool (Windows)
    ├─🗎 build.sh             Launch Build tool (Linux)
    ├─🗎 msxgl_config.h       Library configuration
    ├─🗎 mygame.c             Your program source code
    └─🗎 project_config.js    Build tool configuration

Note: If you prefer, you can use an alternative file layout to have the MSXgl directory inside your own project directory.

Setup Build Tool

Edit project_config.js:

  • Change ProjName to "mygame".
  • Set Machine to the minimal version of MSX hardware you want to support for your program. Let's say "1" for .
  • Set Target to your target format. Let's say ROM_32K (cartridge with a 32 KB ROM visible by the CPU on page 1 and 2).
  • If you have configured an emulator path in projects/default_config.js, set DoRun to true to allow auto-launch (easier to test your program).
  • Execute build.bat, check the emul/rom directory for mygame.rom and test it.

Many other build options can be defined in project_config.js. See the options list.

This is where you will be able to choose which MSX version your program is intended for (MSX 1, 2, 2+ or turbo R) and the type of program you want to create (MSX-DOS, BASIC binary, plain or mapped ROM).

Setup library

The msxgl_config.h file contains many options to configure the library to better suit your needs.

This configuration is especially useful to optimize your program and can be ignored at first. It allows for example to define which screen modes you want to support for your program so that the library adapts accordingly.

Change program content

Here it all depends on the type of game you want to make.

The following example will show you all the steps required to create a program that moves a sprite over a background on an MSX1. In the projects/samples directory you'll find numerous sample programs that will show you how to use MSXgl's various features for a variety of media.