Jump to content


  • Content Count

  • Joined

  • Last visited

Posts posted by sage

  1. Spoiler

    BLL Comlynx Loader/Debugger

    (I wont talk about BLL nor the BLL workaround for the Lynx encryption. The following focuses only on the Comlynx loader/debugger included in BLL.)

    Several homebrew ROMs (e.g. Alpine Games, Championship Rally, SIMIS) claim that they contain a BLL loader. So what is the technology behind this and how can you make use of it?

    Simply speaking, it is a small piece of code which listens on the comlynx port in the background for some specific command sequences.
    Depending on what had been enabled at compile time, these command can be used for debugging the Lynx over comlynx (reading/writing memory, registers, breakpoints), upload and start programs, reset and make screenshots (and send them back to a connected PC).
    The most useful feature is the game upload, which can be used for debugging on real hardware. It is much faster than using a flash or sd card which need to swap cards, cables and switching the Lynx off/on. It is very useful for comlynx game development as you can upload the game to several units in parallel by one adapter within only a few seconds.

    What do you need hardware wise? At least of the loader cards (or the rom on some flash card). A comlynx-serial adapter or a USB serial adapter with 5V level (see below).
    The following cartridges contain a BLL comlynx loader. But it might only be active in a specific screen:

    * BLL Loader Card: selectable speed.
    * SIMIS: Main menu only, 9600 baud.
    * Lynx Reloaded: Main menu only, selectable speed.
    * Alpine Games: Read manual
    * Championship Rally: BLL Loader im Tournament screen (after pressing "New Game"), 9600 baud.
    * PATW: Loader menu, speed selectable
    * most homebrews where the developer forgot to disable the loader: always active, 9600 baud
    * Not to forget the flashcard designed by Karri, which allows to flash a ROM via Comlynx.

    Comlynx is a serial protocol. Because of hardware limitations on the Lynx side, it uses always 8 bit 1 stop bit and even parity (8E1). The speed is limited to 2400, 9600, 31250, 62500 baud. 9600 is compatible with any PC hardware and adapters, but 31250 and 62500 are not so common, even so 31250 matches the speed of the MIDI standard. In summary, if you want to use 31250 or 62500 baud, you need to chose your your hardware carefully.
    Uploading a game which is close to the memory limit of ~56kb, the upload with 62500 baud takes about 10 seconds, but 60 second with only 9600 baud.

    Limitations and file format:
    The game must fit into the Lynx memory. You cannot upload ROM images, but have to upload the binaries which build up the rom image.
    The bll assmbler (lyxass) and newcc65/ld65 will produce these binaries directly. For the uptodate version of cc65 you need to create the binary with a special config file (add lynx-bll.cfg to the command line).
    Game code can start from $200 on until the position of the hardware registers.

    Technical details:
    The loader itself is placed at the end of the memory ($FFC0), thus it can not be overwritten by any game code.

    Documentation from the BLL kit:

    The Debugger supports the follwing commands:
    $81,"P" - Program
    $81,"R" - Reset
    $81,"S" - Send screenshot (palette+data)
    $82 - continue
    $83 - set registers
    $84 - write : 0 - byte
                  1 - word (hi first!)
                  2 - bytes
    $85 - read  : 0/1/2
    $86 - get registers

    The ComLynx-Loader wants:

    start-sequence : $81,"P" ; command : load program
    init-sequence : LO(Start),HI(Start) ; start address = dest.
                    LO(Len XOR $FFFF),HI(Len XOR $FFFF) ; and len of data

    Xmit-sequence : Len bytes .... ; data

    There is no checksum! If there is an com error, it will not be detected. The upload might stall or the program might crash.
    If you read from a file, do not forget to skip the header (and reduce the length accordingly).


    How to include it in games:

    define the "Baudrate", default is 9615
    include serial.inc and debug.inc
    call "jsr InstallLoader"

    ancient cc65 code (newcc65 compiler):
    call "InstallUploader();"

    current cc65:
    You can add the uploader to any program by compiling it with lynx-uploader.cfg. This will add an interruptor that listens to ComLynx traffic. But you need to set up the baudrates by yourself to make it usable.



    I didnt find it, but I copied together some information.

    I suggest to add the schematics from the BLL kit with the max chip. I can did out some USB-CL 5V converters, too.


    And here are some threads with more and deeper info:


    • Like 1

  2. there are somewhere here in the forum.

    as there are only around 30 new levels for lemmings, i did not bother to puit them all into one rom yet, thus there are 30 different roms ;-)

    for cc i dont actually know. there are hundreds of levels, but not all of them are nice and work on the lynx, as it has some lower limit for enemies etc compared to teh dos version. and some effects are slightly different.

    • Like 1

  3. seems nobody beside Karri tried?


    I extended it a bit and was merging the midi-synthesizer (which i posted here 3 years ago) with the effect/instrument editor (or the other way around).

    now you can trigger effects/instrument from your midi keyboard on the lynx. support for 128 slots instruments and percussion (effects). but only one can be saved to eeprom (128 byte limit :-b ).

    there is some possibility to upload/download by midi, but that is a bit too complicated for normal users.



    with opt1 you switch between editor and synth player.

    as long as you are in the editor, any midi channel (beside 10) triggers the what is in the editor to be played as instrument with the correct note. if you play channel 10, all notes will play the editor content as effect/percussion.

    in the synth mode, any midi channel will play the instrument in the slot which has been assigned by the midi-program command to the channel. channel 10 will play effect/perc where the note gives the index in the percussion table.


    the editor commands have mostly stayed the same. whats new is that one can switch the play on edit/move from inst to perc/eff or turn it off.

    • Like 1

  4. given the vast numbers of patched ROM, this seems to be rather easy ;-))))


    * Hot Dog (title picture replacement)

    * Battlezone 2000 (enable Easter Egg game by default)

    * Eye of The Beholder (change EEPROM save code)

    * Alien vs Predator (enable Alien character, select level)

    * Chips Challenge (replace levels)

    * Lemmings (replace levels)

    * Xenophobe (unlimited health)


    • Like 1
  • Create New...