Elona Porting Project Overview

Version 6.4 by John Stroy on 2011/03/26 06:27

The Elona Porting Project aims to create an extensible and maintainable port of the roguelike Elona.

The project aims to make an initial port of Elona to Java (pure, no native code outside of the Java platform) through the HSPlet framework that will be nearly 100% compatible with mainline Elona.  Within reasonable bounds, the port should behave just like mainline Elona.  Some aspects are difficult or impossible within these restraints (for example, inter-process mutexes do not exist in pure Java; therefore, prohibiting multiple active instances through inter-process mutexes would not be possible); such aspects should be minimized if possible.

Resources

HSPlet will be used to bring up the initial port of Elona on Java.

Background

HSP compiles files into its own object code format, commonly called "packfiles."  These files contain byte code that interpreted at runtime by the HSP runtime virtual machine.  start.ax is the entry point for most HSP programs, including Elona.

HSPlet is an implementation of the HSP runtime environment in Java through a compiler and HSPlet runtime library.  HSPlet compiles HSP's packfiles into one or more Java .class files.

Requirements

ToDo

Objectives/Milestones

HSP Extension stubs - done!
HSPlet new opcode enhancement stubs - done!
HSPlet new opcode enhancement implementation - mostly done - missing some extended DllCtrl opcode implementations, COM> interaction
Elona compilation on HSPlet - done!  Private branch of HSPlet compiles Elona successfully.
Elona port with stubbed extensions - Broken - the constant pool has overflowed because of the number of generated constants.  VMspec indicates that there can be at most 65536 constant pool entries.  Currently, there are approximately 135000 constant pool entries after a source-level modification to Elona to reduce the number of constants.
Elona port with implemented extensions
Working Elona port, equivalent to Elona 1.22
Enhanced Elona port - extensibility hooks provided
Enhanced Elona port - extensibility hooks implemented
Enhanced Elona port - extensibility hooks used to provide i18n support, graphics pack support, music pack support
Enhanced Elona port - extensibility hooks used to reduce the amount of hardcoded data within the game
Enhanced Elona port - extensibility hooks used to provide expandable storage