The blog of EagleSoft Ltd!
At EagleSoft Labs, I post about the development of my various retro homebrew and video game mods, Indie video game projects, software, and electronics. I also review software, and post about other geeky/nerdy stuff.
On 02/25/15, EagleSoft Ltd moved its old Google Sites website to its permanent home with a custom domain. Although we originally wanted to also move this blog (formerly hosted at www.eaglesoftlabs.blogspot.com) as a subdomain ("blog") under the domain, we had technical difficulties in doing this, and due to last year's monumental amount of development work, this task was backlogged. While configuring the domain settings today (due to an upcoming renewal/one-year-anniversary the domain for this new 2016 year next month), we tried the steps again, and finally got the subdomain setup!
So we are proud to introduce the new blog domain...
The year2015 A.D. for EagleSoft Ltd was a great year! In approximate order, the following is the key events for EagleSoft Ltd in the past year.
Unfortunately, due to bottlenecks and technical difficulties with the
BASIC BEX compiler for Sega, the Ultra Air Hockey Sega/Retro port was
moved from BEX to SGDK in Jan 20; this project is still ongoing, but the progress for the SGDK attempt is nearly caught up with the old BEX attempt. EagleSoft Ltd successfully finished and published to the EagleSoft Ltd website its first Unity3D video game, both a v1.0 and v1.1 version of Ultra Air Hockey DX around Jan/Feb 2015, and most importantly, purchased a Google Play License and published a Android port to the Google Play Store around summer 2015. This project was a group project started with a colleague for a Fall 2014 Fundamentals of Software Engineering college class. We also officially purchased and setup a domain for the website (formerly a stock Google Sites one) to www.eaglesoftltd.com on 02/25/2015. During March-April 2015, we published 0xdbin, a computer architecture number utility for a graded class project. Furthermore, key to retro development for the Sega Genesis/CD/32x, funded with a large refund check from my shrewd Uncle Sam, I purchased an EverDrive MD for my birthday, a flashcart that would allow me to test my homebrew projects and hacks On Real Hardware (TM), for debugging discrepancies and issues for the projects between emulators and Real Hardware. The purchase of this EverDrive MD finally finished a quest started in 2011 to assemble the ultimate, retro Sega gaming machine: a Sega Genesis CD 32x with EverDrive MD (and backwards compatible with Mark III SMS games, and some hacked Game Gear games converted to SMS format).
During Summer 2015, we began work on a second Unity3D video game called StarEagle; however, it has been put on hold currently. Around late Summer 2015 to early Fall 2015, EagleSoft Ltd expanded its social networking presence to a FaceBook Group. During Fall 2015, as part of a graded IED project for college, I began work on finishing a colleague's Unity3D video game idea called Colonial Combat, with a newer project group. The project received an A. This project is currently ongoing now in our own leisure time outside of class. However, on 09/19/15, EagleSoft Ltd's primary development machine, the beloved HP ProBook 4540s, died; may she rest in piece. This laptop I received more or less for free, due to earning a one-time $1000 scholarship at the community college for usage on school supplies, and I greatly miss her. Currently, I am using a loaned laptop from the university for development and primary computing, but its rental is due on 01/15/16. At the same time of the development of Colonial Combat, I worked on finishing an old Fundamentals of Software Engineering Android app called The Equator from another project group for Distributed Systems class, by putting in internet database connectivity. This application was yet the hardest project I ever worked on, due to the old project using MIT App Inventor 2, and having to write very convoluted code to fetch the online database's data and cache it locally onto the device with a hackish local database.
Finally, the year ended with a long-awaited release of Demo #3 of Sonic CD Breakout for SAGE (Sonic Amateur Games Expo) 2015; however, SAGE 2015 has been postponed until later in early 2016. I also finally earned my B.S. Software Engineering degree! Overall, EagleSoft Ltd accomplished much more than expected in the past year, and we plan on doing a lot more next year!
EagleSoft Ltd accomplished creating plenty of software over the past year and in getting its online presence established. Of the highest priority right now, however, is generating funds for a new laptop and getting a job in my field! This current laptop is a rental from the university, which is due on 01/15/16. The important data from this rental and the dead one must be transferred to a permanent home in a new laptop, and time is of the essence. I already have a laptop picked out, but need to find way to fund acquiring this capital in time, due to lack of funds due to college costs last year.
As for software engineering projects, in 2016, we at EagleSoft Ltd will continue to work on Colonial Combat and Ultra Air Hockey Retro development, both which currently have the highest priority in terms of software development. We may also get back into retro video game modifications (there is a project in the works, TBA, if the project is feasible) too. After those 3 projects, work on StarEagle will resume.
As for other plans, EagleSoft Ltd is also considering creating live YouTube videos for video game reviews, electronics, and other nerdy stuff. Details TBA in the near future. For the future, we are also looking into homebrew developement for Dreamcast and the Atari XE(GS) consoles, as well as perhaps more Sega homebrew. (We do not have a Dreamcast yet, nor any means to run code on either console On Real Hardware. Also, research needs to be done on how to program both using high-level tools.)
Bad news :(! The Sonic the Hedgehog fans who were going to host SAGE (Sonic Amateur Games Expo) for 2015 have decided to postpone the event from Dec 2015 until Spring 2016 now. Full details about this delay (and why) can be found at Sonic Retro's post. EagleSoft Ltd submitted a Demo #3 release of Sonic CD Breakout to the event, and was planning on submitting a first demo build of Colonial Combat to the event.
The good news is that, if the fans running the event allow an extended submission deadline, this gives us a chance to receive and implement feedback and bugfixes from those who have played the Demo #3 release, to incorporate into a v3.1 release to submit into the now-postponed SAGE event in Spring 2016. It also definitely gives us time to add more levels, FMVs, and improved code to Colonial Combat for the event.
We will keep the EagleSoft fans/blog readers informed about the extended SAGE date (and SCD Breakout/CC development) as it occurs :)
Good news! Although EagleSoft Ltd mostly does not like mobile app development for "smart" devices (because we're too cool and old-school for hipster new school), for what few apps for smart devices we may make, we now have a NEW Mobile Section on the website! Check it out; we have a new app for a graded project (mostly as a PoC) for an equations database called "The Equator", and have added a link in that section down to our famous mobile port of UAHDX!
Ho ho ho! Finally! It's here, DEMO #3 of Sonic CD Breakout, just in time for Christmas 2015 and SAGE 2015!
This
demo has been in the works for 2 years (since 2013), and is finally
ready for a release! To summarize the changes, bugs were squashed, two
new zones were created (Desert Dazzle Zone and Quartz Quadrant Zone), 3
special stages were created, and time zone based backgrounds and borders
were created for all levels. What is Sonic CD Breakout? It's a Sonic
fan game, which is a Sonic CD themed breakout clone, using the BreakGOLD game engine as a total-conversion. For more information about the fan game project, see this page. The latest demo can always be downloaded from that page. READ the readme in order to learn how to install the game, because some "assembly" is required.
This demo #3 is planned to be released for SAGE (Sonic Amateur Games Expo) 2015 Act :)! Will created a post announcing when it has been submitted and hosted at the expo
During the week of 09/20/15-09/26/15, I cleanup up the site and add a few pending items. I converted the leftover, hard-coded URL links to soft-links that will update as pages/content is moved around with our web host provider tools. Most importantly, I added a few pending items, including an update to the music page, now including YM2612 Genesis tunes and YM3812/YMF262 tunes for OPL2/OPL, an unofficial WIP music pack release of the YM2612 and OPL2/3 tunes for StarEagle (with VGM Play) and an official updated release of the YM2612 tunes for Ultra Air Hockey (Retro). Also updated is the main page with the internship project and an addition of an EET page for electronics and a page for Microsoft Office Macros.
Enjoy the new updates and content, and stay tuned for more EagleSoft Ltd development!
Way back in 2014, we showed a preview of what was in the works for Demo #3 release of the Sonic CD Breakout fangame, including Desert Dazzle Zone, Quartz Quadrant Zone, and the training special stage. Although in that post we predicted having a release of Demo #3 for Act 2 of SAGE 2014, that did not happen, since we decided to hold off on doing so after we completed both of those zones and of the special stages. Not only did we do that, but we also added dynamic background images depending on each level's time zone. Since that post, we have finished Desert Dazzle Zone, Quartz Quadrant Zone, and also the Special Stages for all of the existing zones! (Desert Dazzle Zone does not have a special stage, as that would create 8 Time Stones, and is not exactly a "cannon" level in Sonic CD.)
Special Stages
All of the special stages (except Quartz Quadrant Zone and Desert Dazzle Zone) are completed now. The special stage levels are accessible by hitting a silver ring monitor. In the special stages, the players must traverse various level layers (similar to the fan game's Time Zone system) by either moving up or down between by hitting certain up/down arrow blocks (instantaneously, instead of with a wait delay as with the time signposts), in order to find and collect the Time Stone. Certain blocks can be destroyed after up to 4 hits, some cannot be destroyed, and there is a slot machine system which could earn you rings and other prizes. The player must also avoid spike balls, which can cause damage. The layer system is intelligent, graying out and shrinking sprites as layer blocks appear in up to 3 farther layers. However, there are more to just these levels than these features; the players have only 4 "attempts" to get the time stone, as their ring count is set to 90 rings and counts down to zero (no overflow of rings with reset back to zero occurs). If the ring count reaches zero, the player dies, the rings reset to 90 rings, and an attempt is removed. Collecting rings in the stage naturally counteracts the ring countdown. After all attempts are removed, the player is kicked out of the level without the Time Stone! Collecting all 7 Time Stones will allow the player to fight the Final Boss in Final Fever Zone at the end of the game.
However, in the process of making these levels and these further edits, a development roadblock was discovered; apparently, the BreakGOLD Level Editor seems to have some type of maximum, hard, internal limit of producing .bgl level packs upto 3.87 MB. Attempting to make any level pack greater than this (by adding more content) causes the saving of the level pack to fail. We are using the BreakGOLD Level Editor v2.0 that came with the full version of the v2.0 BreakGOLD game, which was acquired on an Breakout collection of games from an eGames Software CD-ROM called "Break!" from Big n' Small Lots (now Big Lots) back in 2004. It is unknown whether the latest, paid, PC, full version of the game has an updated Level Editor that fixes these (and other) known bugs with the v2.0 editor.
If this bug is not fixed in a possible newer version of the Level Editor, we shall either try to create a small, personal assembly patch for the Level Editor to fix the issue, or just simply breakup the fan game into two parts: Part 1 (up to Quartz Quadrant Zone), and Part 2 (Quartz Quadrant Zone Special Stage up to end of game). If this split needs to occur, Part 2 shall start the player with a "perfect game" from Part 1 (5 Good futures, 3 Time Stones), and start the player with Quartz Quadrant Zone's special stage (it could not fit in the current level pack, due to the hard 3.87 MB limit). We have pushed the engine to its limits with this total conversion for the fan game!
Regardless of which direction the Sonic CD Breakout fan game will be going with regards to possibly splitting up the project, before we make an executive decision, we are going to release a Demo #3 of what we have "very soon", with a potential patch to transplant the game to the Android port of the BreakGOLD engine!
It's been exactly one year (Sept 2014) since any major progress was made on Sonic CD Breakout! However, we have finally put some effort and finally finished Quartz Quadrant Zone! Both main level acts involve finding the goal sign, which requires traveling through the Time Zones in order to hit a switch to reverse the direction of conveyor blocks, which are preventing access to the goal sign. Various enemies are in this zone, including a Caterkiller (with various destroyable parts), a jumping spider (which deals damage if you hit them when jumping), a Skorp (which shoots deadly lasers), and a moving snail (which can deal damage if you hit them when they unleash their spikes). The zone ends with a simple boss, which shoots bombs, which you must repel back towards Eggman in order to defeat him.
Overall, the levels have plenty of gimmicks, different gameplay, and are challenging.
Nope!BreakGOLD modding and development on Sonic CD Breakout is not dead yet! Although development of both has been put on the backburner, I did determine how to transplant a custom BreakGOLD table mod (such as Sonic CD Breakout) to the Android version, and Android-exclusive assets to the PC version. The results and method are not streamlined yet, but as a PoC, it works. Bugs with the transplant include no audio, lack of transparency on images, and a higher paddle. Such transplanting features will (eventually) be implemented into the next version of the BreakGOLD Editor. The next demo release of Sonic CD Breakout may have an Android port once I perfect the issues.
It has been sometime since I have posted some Windows Tips at this blog. The other day, I was tinkering around with a Windows 95 Virtual Machine, in order to try and install/play a CD copy of Megaman X I found at Goodwill two years ago. Unfortunately, the video game installer and the game itself on the CD were MS-DOS based, and would only accept 8.3 filenames for the installation directory ;_;. Whatever shall we do?!
As I found in a MSDN forum, you could create a VB script, and then drag n' drop a file from another window on it, or simply cut/paste the original path directory in the script's pop box. Just open up Notepad, paste the following script code, save as .vbs, and chug away!
Set fso=CreateObject("Scripting.FileSystemObject")
' Is object a file or folder?
If fso.FolderExists(WScript.Arguments(0)) Then
'It's a folder
Set objFolder = fso.GetFolder(WScript.Arguments(0))
rtrn = InputBox("Here's your short path:", "SHORT PATH", objFolder.ShortPath)
End If
If fso.FileExists(WScript.Arguments(0)) Then
'It's a file
Set objFile = fso.GetFile(WScript.Arguments(0))
rtrn = InputBox("Here's your short path:", "SHORT PATH", objFile.ShortPath)
End If
Nope, EagleSoft Ltd is neither dead nor undead, but still alive! We at EagleSoft Ltd have created a new section on the website: the misc. section! At this section, we have added some Sonic Robo Blast 2 lua scripts, moved the old music page from the Sega section here, and added some racetracks/mods for Trackmania! Soon, we shall have a page with some Microsoft Office macros we have created.
We are also working on a NEW Unity 3D game! An official blog post detailing the game will be posted later. The content is currently on the website unofficially, but the development should hit the ground running in the week after next and especially during the school year, since I intend to use this project Integrated Engineering Design class as a Software Engineering project :).
UAHDX v1.1 Android Port, now published on Google Play!
Ultra Air Hockey DX (UAHDX) has been updated to v1.1, as well as an initial release of a new Android Port, both as a side-loadable app, and as an officially signed app at the Google Play Store! Due to lack of full-version purchases for the PC version (read: none!), the demo and full-versions of the game have been merged into a single, full, freeware version!
It is strongly encouraged to give a donation of any amount to EagleSoft Ltd for future developments and motivation :).
Yep, you read the title correctly! EagleSoft Ltd now has a FaceBook page to further inform and to keep customers in the loop of current events with the indie dev group. The page will be used to relay blog information, and to give the latest news about the group. "Like" us today and share!
After days of arduous experimentation, debugging, SGDK discovery, forum chats, and sweat, managed to get some more progress done on the redux of the Ultra Air Hockey Sega ports with SGDK. Managed to implement the following:
Although there are a lot of bugs at the moment and features coded in but not tested nor utilized yet, progress is going smoothly. Paddle movement runs consistently between a smooth 50 to 60 FPS. A few coding hiccups occurred with sprite management and with paddle movement, but most of them have been ironed out. Next development milestone and preview should have collision detection (and bug fixes) :)!
As I may have mentioned earlier in older news posts, the BEX/Sega homebrew port of Ultra Air Hockey was cancelled around Winter 2014/2015. (BEX is a BASIC language for the Sega Genesis/CD/32x.) This was due to several issues that occurred while developing it, including
instability of the BEX compiler and other bottlenecks. As the homebrew ROM executable became bigger, internal errors of the compiler being unable to compute jump offsets of large "bsr.w" branch Motorola 68k instructions began creeping in. Although it seemed to be a false positive of an error (since the ROM still compiled), further in development, I feared the ROM would corrupt further as it became bigger and more complex; in fact, at one point, a subroutine of code dealing with paddle movement ceased working between two builds, despite the BASIC code of that subroutine being nearly identical and valid between both builds. Furthermore, I made the mistake of trying to build a (poorly written, custom) port of the SpriteLibrary I used for sprite management in the PC QB64 code, and using the buggy "include" command of BEX to include that code, which seemed to create problems. I attempted to port that library over, with the future intention of using it to port over other games written with that library from QB64 to BEX and the Sega Genesis. Coupled with future problems of having to rewrite sections of the game code (due to the QB64 code using some subroutine/functions with parameters passed by reference, a feature which BEX cannot do), manage sprites and collision manually, and most importantly, have to deal somehow with trigonometry to handle puck movement and rebound angles (because BEX cannot handle neither trig functions nor 16/32-bit fixed point arithmetic), major development issues were ahead. It was at this point that I decided to ditch the BEX build, and refactor the game using C and the SGDK library for GCC
Why did I move development to the SGDK? Well, for several reasons. Firstly, the SGDK is opened source, C-based, more stable, and is updated more regularly than BEX (which hasn't had an update in years). With it being C-based, I could use a real programming language, and use main parts of the code in the future for any additional ports of the games to other retro platforms, and simply modify the baseline code for hardware-specific changes. Furthermore, it contains more complex and useful programming features out-of-the-box, including direct sprite support (including sprite collision), fix16 and fix32 fixed port arithemetic and trigometry functions, passing function parameters by value and by reference, etc. Furthermore, being C-based, it is easier to split the program into smaller testable modules of .c and .h files, instead of having a giant text file of all the main function and all of the subroutines and function.
Although SGDK does have its benefits, it has a few drawbacks in comparison to BEX. BEX is cross-platform, allowing the user to write the code once, make a few minor tweaks, and allow that same code to run on the Sega CD and Sega 32x add-ons. At the time of this writing, SGDK does not officially support hardware-specific Sega CD and Sega 32x features, but there are a few ways to extend the baseline SGDK support to run and compile for Sega CD and 32x, but I believe it takes more effort. Also, the BEX port had the benefit of a very close code translation between the original QB64 code and BEX (being that both are BASIC languages), and is BASIC.
Over the past week of summer, I have begun transcribing the old BEX Basic code to SGDK C, and have most of the menus and introduction created, shown below. These menus are mostly the same as shown in older videos, just written in C and with a few additional features, including fade outs of palettes and splitting the sound test into a separate music test and sound test options item. There are a few bugs to fix, but the functionality is basically the same as before, and as tested with my Everdrive MD, the code works on hardware too!