Jump to content
IGNORED

Atari Lynx Game Development Tools and Tutorials (wip)


Turbo Laser Lynx

Recommended Posts

54 minutes ago, OldAtAtari said:

And that's what we're here for, right? Maybe I'll focus on Assembly. Programming in Assembly seems like the Holy Grail of writing code. Shifting bits around back and forth in a format that regular humans can't read. ?

Do you have any suggestions for tutorials? I started looking at this last week (by way of AtariGamer.com): https://www.chibiakumas.com/6502/?theme=print

Thanks for the advice!

 

Tutorials? I do not know. Examples, yes. For example:

 

https://github.com/42Bastian/lynx_hacking

:-)

  • Like 1
Link to comment
Share on other sites

I just realized that I missed the sprite file of Ottelo.

 

It comes here:

sprite.spr

 

ottelo1.jpg.465351ae1576530874675403f5eb58b2.jpg

 

Plus the compiled binary:

ottelo.o

 

This was part of a 1024 byte competition. In Lynx Reloaded cart there is a more advanced version with music and sound effects.

The more advanced version with a music engine:

ottelo2.asm

  • Like 3
Link to comment
Share on other sites

Thanks, karri. Now I just need to find instructions on how to compile these files so I can give it a try.

 

And I need to research BLL to find some instructions on that. I didn't get to spend any time on it yesterday. All I've seen so far is a quick introductory page telling the history of it. I need to find a good how-to instructional.

Link to comment
Share on other sites

 

This, from the BLL web page:

Hardware

To program on the Lynx, you'll need some hardware.
The most important is a Lynx cart with a Loader-EPROM on it.It down-loads the programs via ComLynx from a host. This host is best an Atari computer, but any machine with a serial port will work.
So, you also need an interface from ComLynx<->RS232.

 

Is this really required to do programming in BLL? An emulator should be able to take the place of the actual hardware, right? Of course once I've got a decent program, I'll want to test it on the real deal, but for just getting my feet wet and giving it my first try, I'd rather not invest any money in it.

Link to comment
Share on other sites

There is no "how-to" bit: download or clone new_bll (if you already did, do it again, fix just some includes), get lyxass, point BLL_ROOT to the base of BLL and then just "compile" it:
> lyxass -v demo01.asm

Code-size : 601
Lines : 2240
Macros expanded : 45
Pass 2 runs : 33
Start-address : $41c0
Memory usage : 3101671

 

 

 

Link to comment
Share on other sites

2 minutes ago, OldAtAtari said:

 

This, from the BLL web page:

Hardware

To program on the Lynx, you'll need some hardware.
The most important is a Lynx cart with a Loader-EPROM on it.It down-loads the programs via ComLynx from a host. This host is best an Atari computer, but any machine with a serial port will work.
So, you also need an interface from ComLynx<->RS232.

 

Is this really required to do programming in BLL? An emulator should be able to take the place of the actual hardware, right? Of course once I've got a decent program, I'll want to test it on the real deal, but for just getting my feet wet and giving it my first try, I'd rather not invest any money in it.

Sure, you can use the emulator. Best is handybug which contains a debugger so you can set breakpoints and modify registers or memory.

  • Like 1
Link to comment
Share on other sites

30 minutes ago, 42bs said:

There is no "how-to" bit: download or clone new_bll (if you already did, do it again, fix just some includes), get lyxass, point BLL_ROOT to the base of BLL and then just "compile" it:
> lyxass -v demo01.asm

Code-size : 601
Lines : 2240
Macros expanded : 45
Pass 2 runs : 33
Start-address : $41c0
Memory usage : 3101671

 

 

 

 

Wow. Ok. I don't think you know who you're dealing with. ? Complete novice here. Maybe I need to go a different direction. Here's what I make of your instructions:

1) Download new_bll. I just found that on GitHub! 
https://github.com/42Bastian/new_bll

2) Fix some includes - I don't know how to do that.

3) Get lnxass -  Uh oh. I googled that on my Work computer. Some of those google results aren't worksafe. ?

4) Point BLL_ROOT to the base of BLL - Yeah, maybe by setting the environment variable BLL_ROOT to the directory where I install new_bll?

5) Just compile it - Looks like you gave me a good example. lyxass -v demov01.asm, but I don't know how it would find any extra files, such as karri's sprite.spr

 

So I guess I'll search the forums. From what you say, there are no instructions or tutorials, but still, people figure it out somehow. Maybe someone out there has documented their learning curve. I'll give it a go when I have some free time. And I certainly don't mean to be disrespectful, 42bs. The BLL kit must be full-featured and bulletproof, because it's been around for a long time and in still in use today. The problem is totally within me. I just don't have the experience to instinctively know how to take a development kit and run with it. Not yet, anyway. I hope to get there someday!

Thanks for all your assistance.

 

 

Edited by OldAtAtari
Link to comment
Share on other sites

On 8/3/2020 at 6:04 PM, OldAtAtari said:

Hello. I'm just getting started in Lynx programming. As for my background, I have some recent Perl experience, but no c++ experience, and I did some assembly 20 years ago in college.

 

I'm not sure which way to go with the Lynx learning. Starting from a clean slate, would anybody recommend c++ over assembly? Or the other way around?

 

And now that it's 2020, and many of these resources have been around for several years, is there one resource that's more up-to-date than the others?

 

I'd appreciate it if anyone could help me get started on the right foot, and even if that means assembly instead of c++, that's totally fine with me.

 

Thanks for all your help.

 

*Just a sidenote, "new cc65", Karri's cc65 "remake" and the official cc65 are C compilers (not C++). new cc65 and Karri's cc65 have been tweaked for the Lynx and are "locked in time" (you don't have to constantly worry that your code breaks).

@OldAtAtari I think the most important thing would be to ask yourself "how do I have fun" and what your goal is.

Unfortunately there's a C vs Assembly thread on almost every retro forum (never been much at all here luckily). Some say that assembly is the only way to go on these old machines, but it's simply not true. I've seen with my own eyes that many great games and even some of the best new games for retro platforms have been written mostly in C. I think it would be more fair to let beginner coders / game developers reflect about what they really want to achieve and to realise different things are fun for different people.

Assembly offers full control, and if you get skilled at it you can possibly push the system to its limits. Also if you're into programming for the programming itself, it might be more fun for you to build everything from the ground up yourself. I've noticed that most of the people here that use assembly are the tool builders, so in many ways the most important guys in the Lynx scene. On the other hand I've noticed that a huge percentage of the finished homebrew games for the Lynx are written in C. I think if you're interested in game development, and don't specifically need to push the system with your game, C might bee a very good choice too.

In fact, I think I was very lucky starting out game development on the Lynx a long time ago. The tool-building guys like 42bs, Karri and sage in the Lynx community have made it really easy on beginners and "artist"/"tinkerer" wannabe coders like me. They've pretty much set up a game development framework for the Lynx. I've looked around developing A LOT for most of the old classic computers and consoles, and very few have such an easy "end to end" game development setup to get into. They might have some parts that are really amazing, but then they might lack some integral part for making a finished game, like just as an example having to build the music driver and tracker yourself. Then again, that's exactly the thing that is all the fun for some.

I've been using Karri's CC65 "remake" myself, he's made a game template that's got all of the complicated stuff taken care of and abstracted, you can pretty much just start coding your game. (Might have to read up on how the Lynx's sprites work, the linked sprite list, the palette, and about to not use the hardware collission). If you're a little bit into coding, you can see how easy it is by looking at the template and the "mini manual".

http://atariage.com/forums/topic/287147-is-10-fps-a-too-low-framerate-for-a-lynx-tile-based-game/?p=4202302
https://atariage.com/forums/topic/277916-berzerkoids-alpha/?tab=comments#comment-4011451
 

Nop90 made some add-ons to that template:
http://atariage.com/forums/topic/290138-karris-cart-template-with-some-addons/?p=4256410

It's easy to set up and use on Linux / Raspberry Pi. (Don't have to know almost any Linux stuff). My silly set up is to develop on my win pc and move stuff over to the pi just to compile. I make graphics in aseprite, the music in chipper, code on Notepad++, ssh code and assets over to raspberry pi and compile (the template contains make files that automagically takes care of the graphic conversion etc), then move lynx executable back to the pc to test on handy :-D http://atariage.com/forums/topic/256753-atari-lynx-programming-tools-and-tutorials-wip/?p=4011786

I've been using sage's chipper tracker for making music. It's quite fast to create music with it when you get the hang of it, and since trackers are usually used for music creation for old systems, it's handy to learn about them. It can export songs/code for all the usual 'frameworks': BLL LyxAss, NewCC65 and CC65 "Remake". There's also abc-music which is really easy to understand ascii notation.

CC65 code optimization tips: https://cc65.github.io/doc/coding.html

All the info and links in the top post are still up to date, so please have a look around and see if you can find some things that suit you, and hope you will have a lot of fun! :) :thumbsup:
 

Edited by Turbo Laser Lynx
  • Like 2
Link to comment
Share on other sites

27 minutes ago, Turbo Laser Lynx said:

*Just a sidenote, "new cc65", Karri's cc65 "remake" and the official cc65 are C compilers (not C++). new cc65 and Karri's cc65 have been tweaked for the Lynx and are "locked in time" (you don't have to constantly worry that your code breaks).

@OldAtAtari I think the most important thing would be to ask yourself "how do I have fun" and what your goal is.

Unfortunately there's a C vs Assembly thread on every retro forum, but I think it would be much more constructive just to think of what you want to achieve and to realise different things are fun for different people.

Assembly offers full control, and if you get skilled at it you can possibly push the system to its limits. Also if you're into programming for the programming itself, it might be more fun for you to build everything from the ground up yourself. I've noticed that most of the people here that use assembly are the tool builders, so in many ways the most important guys in the Lynx scene. On the other hand I've noticed that a huge percentage of the finished homebrew games for the Lynx are written in C. I think if you're interested in game development, and don't specifically need to push the system with your game, C might bee a very good choice too.

In fact, I think I was very lucky starting out game development on the Lynx a long time ago. The tool-building guys in the Lynx community have made it really easy on beginners and "artist"/"tinkerer" wannabe coders like me. They've pretty much set up a game development framework for the Lynx. I've looked around developing A LOT for most of the old classic computers and consoles, and very few have such an easy "end to end" game development setup to get into. They might have some parts that are really amazing, but then they might lack some integral part for making a finished game, like just as an example having to build the music driver and tracker yourself. Then again, that's exactly the thing that is all the fun for some.

I've been using Karri's CC65 "remake" myself, he's made a game template that's got all of the complicated stuff taken care of and abstracted, you can pretty much just start coding your game. (Might have to read up on how the Lynx's sprites work, the linked sprite list, the palette, and about to not use the hardware collission). If you're a little bit into coding, you can see how easy it is by looking at the template and the "mini manual".

http://atariage.com/forums/topic/287147-is-10-fps-a-too-low-framerate-for-a-lynx-tile-based-game/?p=4202302
https://atariage.com/forums/topic/277916-berzerkoids-alpha/?tab=comments#comment-4011451
 

Nop90 made some add-ons to that template:
http://atariage.com/forums/topic/290138-karris-cart-template-with-some-addons/?p=4256410

It's easy to set up and use on Linux / Raspberry Pi. (Don't have to know almost any Linux stuff). My silly set up is to develop on my win pc and move stuff over to the pi just to compile. I make graphics in aseprite, the music in chipper, code on Notepad++, ssh code and assets over to raspberry pi and compile (the template contains make files that automagically takes care of the graphic conversion etc), then move lynx executable back to the pc to test on handy :-D http://atariage.com/forums/topic/256753-atari-lynx-programming-tools-and-tutorials-wip/?p=4011786

I've been using sage's chipper tracker for making music. It's quite fast to create music with it when you get the hang of it, and since trackers are usually used for music creation for old systems, it's handy to learn about them. It can export songs/code for all the usual 'frameworks': BLL LyxAss, NewCC65 and CC65 "Remake". There's also abc-music which is really easy to understand ascii notation.

CC65 code optimization tips: https://cc65.github.io/doc/coding.html

All the info and links in the top post are still up to date, so please have a look around and see if you can find some things that suit you, and hope you will have a lot of fun! :) :thumbsup:
 

 

Turbo Laser Lynx, thank you so much for this! It's the best description of the topic that I've seen!

Assembly seems really fun, but so is C! Sounds like there is more support for C newbies than for assembly newbies. So maybe I should start with C.

And the link to Nop90's template (which is Karri's template with some add-ons) seems perfect. I had found an old post today with a link to download Karri's template, but the link was broken (https://atariage.com/forums/topic/104103-megapak-template-available/). That post was from 2007. So I assume that this new link is updated and just as easy to use. All I have to is install it (on Linux, right?) and start playing. And if I'm understanding you correctly, your method is one of developing the game on Windows and then only moving over to Linux to do the compiling. I'm a 50/50 Linux/Windows user, so it looks like I've got some options.

Ok, I can't wait to get started. Thank you again and again.

 

  • Like 1
Link to comment
Share on other sites

50 minutes ago, OldAtAtari said:

 

Turbo Laser Lynx, thank you so much for this! It's the best description of the topic that I've seen!

Assembly seems really fun, but so is C! Sounds like there is more support for C newbies than for assembly newbies. So maybe I should start with C.

And the link to Nop90's template (which is Karri's template with some add-ons) seems perfect. I had found an old post today with a link to download Karri's template, but the link was broken (https://atariage.com/forums/topic/104103-megapak-template-available/). That post was from 2007. So I assume that this new link is updated and just as easy to use. All I have to is install it (on Linux, right?) and start playing. And if I'm understanding you correctly, your method is one of developing the game on Windows and then only moving over to Linux to do the compiling. I'm a 50/50 Linux/Windows user, so it looks like I've got some options.

Ok, I can't wait to get started. Thank you again and again.

 

Np! :) I wouldn't wanna be the one that trick you to choose one or the other. I think there's help from the guys either one you choose.

I like C because you can get pretty fast results, but sometimes I wish I would've had the patience to learn things from the ground up with asm. I've done some cc65 C coding for the c64 and vic-20, and that's a lot of pokeing numbers into registers, so I get the concept and it's fun (I guess that that was really more similar to Basic). Again, I think it's mostly about what you're going to do.

Here's the three latest small games I've made with cc65 "remake" and the setup I mentioned:
 

Reiko's Robot Run
Sylvester
Scroll of the Time Lords - Lovejoy prologue


Yup, as far as I know those are the newest versions of the template. Yeah, I move everything over just because I'm so used to working on windows, obviously that wouldn't be needed if you're used to text- and graphics- editors etc. on Linux.

Curious to see what you will come up with.

Edited by Turbo Laser Lynx
  • Like 1
Link to comment
Share on other sites

4 hours ago, Turbo Laser Lynx said:

Np! :) I wouldn't wanna be the one that trick you to choose one or the other. I think there's help from the guys either one you choose.

I like C because you can get pretty fast results, but sometimes I wish I would've had the patience to learn things from the ground up with asm. I've done some cc65 C coding for the c64 and vic-20, and that's a lot of pokeing numbers into registers, so I get the concept and it's fun (I guess that that was really more similar to Basic). Again, I think it's mostly about what you're going to do.

Here's the three latest small games I've made with cc65 "remake" and the setup I mentioned:
 

Reiko's Robot Run
Sylvester
Scroll of the Time Lords - Lovejoy prologue


Yup, as far as I know those are the newest versions of the template. Yeah, I move everything over just because I'm so used to working on windows, obviously that wouldn't be needed if you're used to text- and graphics- editors etc. on Linux.

Curious to see what you will come up with.

Wow! All those games look really fun.

I hope I can come up with something decent, or at least have fun trying.

I've started a separate post to document my experience, so that the next person might not have to ask all these newbie questions!

 

Thanks for your help!

 

 

  • Like 2
Link to comment
Share on other sites

  • 1 year later...

There is also a Windows desktop version (with sources) that I wrote years ago for Windows 3.1. For some silly reason it still works on any windows today. The sources are in my repo in lynx/contrib/mttty.

 

It also works for downloading BLL files using USB->serial cables. Also with Lynx special baudrates.

 

Here is the exe.

Mttty.zip

  • Like 2
Link to comment
Share on other sites

  • 3 months later...
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...