Results 1 to 2 of 2

Thread: Tutorial: How to make a simple N64 program

                  
   
  1. #1
    Won Hung Lo wraggster's Avatar
    Join Date
    Apr 2003
    Location
    Nottingham, England
    Age
    52
    Posts
    139,518
    Blog Entries
    3209
    Rep Power
    50

    Default Tutorial: How to make a simple N64 program

    via http://www.neoflash.com/forum/index.....html#msg53565

    Did you ever wanted to create your own program on the N64?

    Yes? Then let me invite you to this little tutorial
    No? Well I hope you still find it entertaining

    First of all I have no clue about what I'm going to talk here, I can't program and all that will follow after this warning is a just a documentation of me applying the principles of copy&paste and trial&error.
    But this is actually a good thing because I will explain everything from a beginners perspective so it should be easy for everyone to follow.

    Disclamer: I only used Open Source Software, everything I discuss or link here is completly legal.
    Introduction:
    Thanks to Shaun Taylor's amazing work on libdragon it has become very easy to write little programs for your favorite console the N64.

    In this tutorial we will use the virtualization software VirtualBox together with Ubuntu and libdragon to create a 100% legal development kit for the N64.

    Every step will be documented with a picture.

    Step 1: Setting up VirtualBox

    A) First you need to download and install Virtualbox: https://www.virtualbox.org/wiki/Downloads

    B) Next you need to download and extract my premade hdd image that contains both Ubuntu and libdragon preinstalled.
    Since both libdragon and Ubuntu are open source it's absolutly legal to link you to this image: http://dl.dropbox.com/u/20912715/N64/n64dev.7z (1000MB)
    If you need a program to extract the file I recommend 7zip

    C) After you started VirtualBox you need to create a new virtual machine


    D) Name it N64DEV and make sure to select Linux and Ubuntu from the dropdown menues


    E) In the "Virtual Hard Disk" window click on "Use existing hard disk"(1), then click on the browse icon(2) and select the hdd image you downloaded earlier(3)


    F) After setting up your Virtual Machine click on "Start" to run it


    Step 2: Inside Ubuntu

    A) Log in with password: dev


    IMPORTANT: To change the keyboard layout click on the little "Deu" icon on the top bar and choose your keyboard layout.

    B) On the top bar click "Places" and then "Home Folder"


    C) Browse to libdragon/examples(1) right-click on "spritemap"(2) and select Copy(3) to Desktop(4). Then rename the new folder on the desktop to n64forever.

    The examples directory has many coding examples that teach you how to program with libdragon. Instead of creating our little program from scratch we will just copy one of the examples and alter it to our liking.

    D) I want to put the N64 Forever logo into our program.
    So I downloaded and resized it to approx 200 pixels on my Windows machine, saved it as N64Forever.PNG and then transfered it to Ubuntu.
    To transfer the picture to Ubuntu running in the virtual machine I used a service called dropbox. But you could upload it on mediafire or any other online storage site too. Then open Firefox in the virtual machine and download it again.


    E) To use the picture in our program we have to convert it first. So copy the picture onto the desktop. Right-click somewhere on the desktop and select "Open in Terminal".
    A black window should pop up.
    Write the following in it:
    Code: [Select]
    <code class="bbc_code">$N64_INST/bin/mksprite 32 N64Forever.png n64f.sprite</code>Press Return/Enter to execute the command.


    F) A new file called n64f.sprite should be on your desktop now. Double click on the n64forever folder on your desktop(the one you created in step 2C) and then open the filesystem directory.
    Delete the files that are already in there(1) and move our n64f.sprite in this directory(2).


    Step 3: Editing the Makefile

    A) First we need to edit the Makefile in our n64forever directory. Since we just copied it from the spritemap example.
    Rightclick on Makefile and choose "Open with Geany"


    B) We need to replace
    Code: [Select]
    <code class="bbc_code">PROG_NAME = spritemap</code>in line 9 with
    Code: [Select]
    <code class="bbc_code">PROG_NAME = n64forever</code>
    And
    Code: [Select]
    <code class="bbc_code">$(N64TOOL) -b -l 2M -t "Spritemap Test"</code>in line 20 with
    Code: [Select]
    <code class="bbc_code">$(N64TOOL) -b -l 2M -t "n64forever"</code>



    C) Save the file and close Geany.

    Step 4: Programming

    A) In our n64forever directory rename spritemap.c to n64forever.c

    Next right-click on it and choose "Open with Geany"

    B) Now alter the code like this
    Code: [Select]
    <code class="bbc_code">#include <stdio.h>
    #include <malloc.h>
    #include <string.h>
    #include <stdint.h>
    #include <libdragon.h>
    #include <stdlib.h>

    int main(void)
    {
    /* enable interrupts (on the CPU) */
    init_interrupts();

    /* Initialize Display */
    display_init( RESOLUTION_320x240, DEPTH_32_BPP, 2, GAMMA_NONE, ANTIALIAS_RESAMPLE );

    /* Initialize Filesystem */
    dfs_init( DFS_DEFAULT_LOCATION );

    /* Initialize Controller */
    controller_init();

    /* Read in single sprite */
    int fp = dfs_open("/n64f.sprite");
    sprite_t *n64f = malloc( dfs_size( fp ) );
    dfs_read( n64f, 1, dfs_size( fp ), fp );
    dfs_close( fp );

    /* define two variables */
    int x = 40;
    int y = 100;

    /* Main loop test */
    while(1)
    {
    static display_context_t disp = 0;

    /* Grab a render buffer */
    while( !(disp = display_lock()) );

    /* Fill the screen */
    graphics_fill_screen( disp, 0 );

    /* Create Place for Text */
    char tStr[256];

    /* Text */
    graphics_draw_text( disp, 10, 10, "N64 FOREVER" );

    /* Logo */
    graphics_draw_sprite_trans( disp, x, y, n64f );

    /* Scan for User input */
    controller_scan();
    struct controller_data keys = get_keys_down();

    /* If Dpad is pressed move Image */
    if( keys.c[0].up )
    {
    y = y+5;
    }
    else if( keys.c[0].down )
    {
    y = y-5;
    }
    else if( keys.c[0].left )
    {
    x = x-5;
    }
    else if( keys.c[0].right )
    {
    x = x+5;
    }

    sprintf(tStr, "X: %d\n", x );
    graphics_draw_text( disp, 10, 20, tStr );
    sprintf(tStr, "Y: %d\n", y );
    graphics_draw_text( disp, 10, 30, tStr );

    /* Update Display */
    display_show(disp);
    }
    }

    </code>You will notice that we deleted quite a bit and added a few lines of our own.

    C) Save the changes

    Step 5: Compiling

    A) Right click somewhere in our n64forever directory and choose "Open in Terminal"

    B) In the box that pops up write
    Code: [Select]
    <code class="bbc_code">make</code>And execute by pressing Return/Enter.


    C) If everything worked it should look like this:

    If not you probably got a typo, check which line it complains about and fix it in the code.

    D) Lots of new files should have been created, but we only care for n64forever.v64. Thats our rom we want to run on our N64.
    You can use the Mess emulator to test your program on your PC:
    http://messui.the-chronicles.org/



    Step 6: Upload the program
    To get the n64forever.v64 rom to your Windows machine use dropbox or mediafire again. Upload it through Firefox in Ubuntu then download it again from within Windows.



    Step 7: Running the program
    To run the program on your N64, you need a flashcart. Just copy the n64forever.v64 to the flashcarts SD card and launch it from the flashcarts menu.


    And thats how our program looks like:

    You can move the N64 Forever logo around the screen with the dpad.

  2. #2

    Default

    Wow, this is really cool tutorial instructions. This is very helpful especially to those who has no knowledge with this including me. I'd love to know more about this and I know this would help me better .

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 0
    Last Post: December 31st, 2009, 23:20
  2. Tutorial 13: Loading and saving simple XML files
    By wraggster in forum DCEmu Homebrew, Emulation, Hacking and Development Forum
    Replies: 0
    Last Post: June 21st, 2009, 17:25
  3. [Tutorial] How to make Put a shine one things [basic]
    By S34MU5 in forum Art/Design Forum
    Replies: 3
    Last Post: February 8th, 2007, 21:28
  4. [Tutorial] How to make Scanlines
    By S34MU5 in forum Art/Design Forum
    Replies: 5
    Last Post: January 1st, 2007, 20:28
  5. Is there an EASY-TO-USE program to make DREAMCAST discs?
    By DracIsBack in forum DCEmu Gaming & General Discussion Forum
    Replies: 5
    Last Post: March 26th, 2005, 23:22

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •