Links| Forums| Comments| Report news
Chat| Polls| Newsticker| Archive

[Login] [Register] [Forgot your password?]

< Next messagePrior message >
AmigaLove (ANF)

Mod-Player: HippoPlayer 2.46beta
After 21 years today Kari-Pekka Koljonen has released an update of his MOD player HippoPlayer on Github. He wrote:

"There was an actual user request (by daxb) in the English Amiga Board a few years back to remove the module list size restriction. This turned out to be a fun challenge. The code assumed the module list index to be a positive 16-bit number, and also used the same index with some magic values to mean a few things. There were a lot of places to change to make this work. The restriction is now at 0x1ffff (131071), which is a crazy amount.

Such a large list eats a lot of memory and is quite slow to process, as it is a doubly linked list. List iteration operations needed some optimization to be usable on an A500. (Next challenge: get rid of the linked list approach.) Random play bookkeeping previously worked only for lists of up to 8192 (0x1fff) modules, this limit is now removed as well.

I decided to challenge myself with some UI changes. The main window buttons are quite cryptic with both left and right mouse button actions, which I have conveniently forgot about. I implemented a modern feeling tooltip which will pop up a helpful text for each button. Maybe this is a first tooltip on kick1.3?

Right clicks on the buttons don't really work like left clicks. I don't know why the past-me left them like that, they're ugly and non-user friendly that way. I changed the buttons to have a proper visualization for right clicks as well.

I also added a few wait pointers to places with long running operations.

Another thing that motivated me to do some hippo coding was the realization that the multitasking approaches used in HiP are bad. At the time I had no idea about thread safe programming. This could lead to some random crashes at times due to bad luck with timing.

Exec provides semaphores to protect shared data, so these were added to a lot of places. Some safety regarging interrupts relying on some data was also added. External applications using the HippoPort still use all data freely.

  • Extraneous requester pop up removed when loading TFMX modules.
  • Fixed a case where unpacked modules were not identified as modules, or a non-module file was identified as a valid module (due to badly initialized memory).
  • A memory leak removed from the file requester.
  • Memory usage is lowered in several situations:
    • Random play bookkeeping now uses a dynamically allocated table.
    • Each modulelist entry is now about 30 bytes smaller, for 1000 modules that means memory savings of about 30 kB! :-)
    • Unnecessary library loading removed from startup. This also speeds up starting on slow machines.
  • Improved stability
    • Starting and stopping playback and loading modules like a crazy person is now not so prone to crashing. This is achieved by adding exclusive access checks to module data and module list in several places (see above).
  • Other general bad behaviour removed from many places, not directly visible to user.
  • May survive low memory situations better when loading module programs or adding files.
  • A bunch of smaller fixes, such as enforcer hit removals at a few places.
  • Code refactoring! It's still quite a mess in many places."
The latest beta version can be downloaded from releases. After unpacking the archive, in the folder "dist" the new version is available and can be copied over the existing installation. '' has to be copied to 'S'. (dr)

[News message: 16. Jun. 2021, 07:16] [Comments: 0]
[Send via e-mail]  [Print version]  [ASCII version]
< Next messagePrior message >

Masthead | Privacy policy | Netiquette | Advertising | Contact
Copyright © 1998-2022 by - all rights reserved.