• Commodore Free Magazine, Issue 77 - Part 13

    From Stephen Walsh@39:901/280 to All on Sun Mar 2 13:15:37 2014
    .

    - - - - - - - - - -

    Q. Do you have plans to release the title commercially through a Scene distributor

    No, there won't be a commercial release as it isn't an original game; and
    so legally a grey area. Also, it's nice to just give something back to the community; after using all the excellent free resources like Vice, etc.

    - - - - - - - - - -

    Q. How close to the original version do you think this port is

    I tried to make it as close as I could within the constraints of the vic.
    E.g. I put in nearly all the animations from the Arcade, eyes blinking up
    and down, etc that I could. There are some omissions due to graphics and memory constraints….

    - - - - - - - - - -

    Q. So what's missing from the Vic version that the "full" version had, and what did you use for reference

    The arcade has some more cut scenes, different coloured super-wolves, free floating balloons and fruit. All these features would push the game to 24K
    at least, - something I resisted doing. I wanted to make it playable on
    real hardware, a vic + 16K is (was) a fairly common configuration. I used
    the original arcade game running under MAME and also the C64/NES versions
    for reference.

    - - - - - - - - - -

    Q. What was the main problem converting the game to the Vic

    I think lack of user defined character space for the graphics was the main obstacle to overcome. It was difficult to fit everything in. For example,
    I couldn't include the full alphabet and only copied across the letters I needed from the Vic character ROM.

    - - - - - - - - - -

    Q. What process did you follow with the conversion, did you for example
    create a test code; or did you start with the graphics then try to fit the
    code around them?

    I mocked up the main screen; then developed some PC based utilities in C#
    to convert the graphics to compressed (Run Length Encoded) data; and then
    wrote my first ever 6502 routine to display this on the screen. It was
    really nice to see it appear on the Vic screen for the first time. Next
    step was to define some graphics for the wolves sprites; and float these
    over the top (learning more 6502 along the way). It all followed on from
    that, with game elements being introduced one by one. The final step was
    to develop the music player.

    - - - - - - - - - -

    Q. Do you plan any other conversions to the Vic

    No, not at the moment at least. Pooyan took pretty much every minute of my spare time for about 6 months, so was quite a drain for me; on top of my
    full time job. I find it difficult to put things down once I start, so the game kind of took over. Sometimes; I would have to get up in the middle of
    the night if I had thought of a solution; and type in the code for it
    otherwise I just couldn't sleep

    So now I'm quite enjoying the rest from it, but eventually I might try my
    hand at something else - there are a couple of possibilities I have in
    mind.

    - - - - - - - - - -

    Q. What are the conversions Best features in your opinion?

    I have always liked chip-tune music; and I think that the in-game music
    isn't too bad considering the limitations of the Vic. It took me a while
    to get the music and sound effects to play independently. I also like the
    cut scene and title screen.

    - - - - - - - - - -

    Q. I know you mentioned some of the tools you used but could you expand on that a little, and do you intend to release the source code to the general public

    Yes, as I already mentioned; the game is built on top of the Robert Hurst's Software Sprite Stack from Denial. I created the graphics and sprites
    using CBM Prg Studio. I used the CA65 as the assembler; and Notepad++ with
    a couple of plug-ins as the development environment.

    Sorry - I've no plans to release the source code at the moment.

    - - - - - - - - - -

    Q. So you programmed this as a "one man team" didn't you have input from anyone else

    It was just me really, well apart from help on the Denial forum; and also
    my wife helped, she made the spreadsheet to generate the curve data for the projectiles in the game.

    - - - - - - - - - -

    Q. How do you go about testing the game to iron out the bugs that may
    appear

    Nothing special - just repeatedly playing the game mostly. There was a particularly nasty bug that I found by setting the game up to invincible
    mode with auto-fire; and running several instances of the game under the
    Vice emulator in warp mode (10 x normal speed) over night. Some of them
    had crashed by morning due to overwriting a wrong zero-page memory address.



    *************************************
    THE ASSEMBLY LINE
    $00: An Introduction and Tools of
    the Trade
    By Bert Novilla (satpro)
    *************************************

    Well, here we go. This is the first installment of a series focused on learning to write assembly language programs for the 65x family of
    processors found in Commodore computers. I would like to publicly thank
    Nigel at Commodore Free for allowing me to share some of my programming knowledge and experience with you here. My belief is that as the current computer "Renaissance" plays out it is important to have modern information regarding assembly language available to all of us. This series of
    articles is my effort. Thank you, Nigel.

    LET'S BEGIN

    Our mutual goal in this series, yours and mine, is to explore the world of
    65x assembly language. Together we will discuss various aspects of what
    many consider the "black art" of computer programming. I will show, and
    you shall soon see, that assembly language is indeed nothing more than a
    method of communicating through a computer using a set of human-readable
    codes called mnemonics. These mnemonics are translated into a series of instructions the computer understands using a tool called an assembler.
    Unlike BASIC or C, which are considered "high level" languages, and where
    one command is translated into a series of machine language computer instructions that may easily reach hundreds of bytes in length, assembly language is translated in a one to one fashion, and is known as a "low
    level" language. One assembly language mnemonic equals one computer instruction. Therefore, assembly language programs execute very quickly,
    often hundreds or even thousands of times faster than the equivalent
    program written in BASIC, and substantially faster than equivalent C
    language code. In addition, assembly language programs use less memory
    than their BASIC and C counterparts.

    In this series we will examine the 6502/65816 instruction set in detail,
    and you will learn efficient ways to use these instructions in the programs
    you write. The choice to learn assembly language puts you, the programmer,
    in the driver's seat. Contrary to popular belief, any program can be
    written in assembly language, and also contrary to popular belief, program development time does not have to be an issue provided you are equipped
    with the proper setup and have the right tools, skills, and habits for the
    job. This article is devoted to helping you with this endeavor.

    More importantly, throughout this series you will learn to communicate
    through the computer at a level that is either not possible or is very difficult with BASIC or C alone. We will explore the 8-bit 6502 as well as
    the advanced 16-bit 65816 processor found in the SuperCPU. Along the way
    we will discuss good programming habits and techniques advanced programmers
    use in programs they create. Our discussion will be limited to assembly language programming in the generic sense, so I will not attempt to bog you down with lists of specific computer addresses nor will I demonstrate
    hard-core sound and graphics as they are complete subjects of their own.
    We will, however, discuss our topics within the context of the Commodore
    64.

    THE PLAN

    So, what is planned for this series? Each time out we will explore a topic relevant to learning assembly language programming, beginning today

    --- MBSE BBS v1.0.01 (GNU/Linux-i386)
    * Origin: Dragon's Lair ---:- bbs.vk3heg.net -:--- (39:901/280)