Giter Site home page Giter Site logo

hippoplayer's Introduction

HippoPlayer

This repository contains the source code for HippoPlayer, a module player for the classic Amigas with OS 1.2 or higher.

Original distribution is available here, from the year 2000: http://aminet.net/mus/play/hippoplayer.lha

Updated version developed later, in 2021: http://aminet.net/mus/play/hippoplayerupdate.lha

Tools used in development:

Files and directories

  • puu016.s: The main very small and clearly structured source file.
  • keyfile0.s: Keyfile generator.
  • playergroup0.s: HippoPlayer.group data generator, this file includes the compressed binaries for replay routines. Used for versions older than v2.48.
  • playergroup2.s: New format group data generator, used from version v2.48 onwards.
  • regtext.s: Possibly important file related to calculating checksums, see notes below
  • kpl14.s: Protracker replay routine source precompiled.
  • kpl: Protracker replay routine binary.
  • gadgets: Gadget's Editor files for the user interface.
  • pl: Replay routines for different module types with precompiled binaries.
  • eagleplayers: Supported eagleplayer plugins, gathered from aminet.
  • scopes: External scopes and related stuff.
  • Include: Some needed include files.
  • gfx: The hippo logo.

Build instructions

The standard include files will be searched from include: directory, these are not included. Some custom includes and some others are included. Tested to compile with ASM-One v1.28, ASM-Pro v1.17, vasm v1.9.

Manual

Build steps:

  • Assemble puu016.s to get the main binary. It should start if you have reqtools.library available.
  • Build the HippoPlayer.group replayer binary bundle.
    • There are binaries in pl/bin and eagleplayers/bin which need to be compressed first.
    • Execute pl/compress_im and eagleplayers/compress_im in Amiga shell to get FImp compressed data.
    • Run pl/compress_shr and eagleplayers/compress_shr on Mac/Linux to get Shrinkler compressed data.
    • Assemble file playergroup2.s and save the binary. Shr-files are used by default.

To build the Protracker replay routine, assemble the file kpl14.s and save the binary as kpl. To build individual replay routines, assemble one in the pl dir and save the binary (or executable) into bin. NOTE: Most of the replay routines are saved as Amiga executables so they can be relocated properly, a few are just binary blobs of PC-relative code.

Makefile

Edit the include paths in the makefiles to suit your environment and ensure vasmm68k_mot and shrinkler are in path, then run make.

Notes

All anti-cracker measures have been disabled from v2.46 onwards.

There is a checksum macro check in the main source file which is called at certain points. This checks if the application strings have been altered, making the app exit if the check fails. There is a CRC checksum check in the file Hippo_PS3M3.s which does the same as the simpler check mentioned above. It will jump into a busy loop and display colors on screen if the check fails.

hippoplayer's People

Contributors

koobo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hippoplayer's Issues

Random Play goes through all sub-tunes

Hi

Not sure if this is normal behaviour but when doing a RandomPlay the player plays all subTunes in one module in order before going to the next tune, regardless of what the Timeout is set to. If I set timeout to 2 minutes and a module has 10 subtunes that are 1 minute long it will play all subtunes through and then go to the next module.
Is it possible to have a settings to not go through subtunes in Random or Next song play and just play the first subTune, which is the main one?

File requester sorts directories only after touching the scroll bar

I have WB 3.1 and I have a mod folder with subfolders A-Z. When I click "New" or "Add" the directories are in the order they are in the hard drive so basically random. When I touch the scroll bar they arrange themselves into alphabetic order. Is is possible to have them open as sorted or is that a Workbench provided requester?

RMB not work in "Favorites" mode

in the "favorites" mode, pressing the right mouse button does not minimize the HippoPlayer window. Clicking on the window minimization gadget in the window title bar works fine.
Also it not work in "directory" mode.

Cannot play next module after specific .mod file

For some reason module "Act Of Impulse" (actimpls.mod) stuck in loop in "modules in random order" and "list repeatedly" and repeats infinitely. In any playlist mode and in any playing order mode.
Amiga 1200 real hardware, AmigaOS 3.2.2.1, Kickstart 47.102, Workbench 47.4, ACA1233n

incorrect operation of the file requester

when you double-click on a module in the built-in file requester, it starts playing not the clicked one, but the previous one. the selected one is highlighted in the list. sometimes it starts to play something junk

Module info not scrolling by mousewheel

On AmigaOS 3.2, in FS-UAE, while scolling by mousewheel in module info window, scrollbar on left side is moving up-down, but content itself not scrolling.

Random mode always starts with first song

If you have set the Play to "Modules in random order" and you start the Hippo Player it always loads and plays the first song in the list at the beginning. It would be nice if even the first song would be randomized.

No Scope Updates when screen is not active

Now that we have multiple monitor support with P96 libraries it is possible to have HippoPlayer playing in its own Native screen and have RTG Workbench active at the same time on the other monitor. But as soon as the Screen on which HippoPlayer is placed is not active anymore the Scopes stop updating, only the timer updates.
Would it be possible to add an option for the Scopes to update at all times regardless if the screen is active or not?

Merge old changes from khval

There were some old changes implemented by khval in late 2017, beside other things some may solve certain issue at exit when running HippoPlayer under AmigaOS4

https://github.com/khval/HippoPlayer

Would be nice if you can merge that code (or atleast a usefull part) into the latest uptodate repository

Getting some crashes in HiP-PS3M

Task 0x658C1C80 (HiP-PS3M) bad access @ 0x60019C9D, pc = 0x0141DB48, lr = 0x01417E34,
Task 0x658C1C80 (HiP-PS3M) bad access @ 0x60019CB0, pc = 0x0141DB48, lr = 0x01417E34,
Task 0x658C1C80 (HiP-PS3M) bad access @ 0x60019CC3, pc = 0x0141DB48, lr = 0x01417E34,
Task 0x658C1C80 (HiP-PS3M) bad access @ 0x60019CD6, pc = 0x0141DB48, lr = 0x01417E34,
Task 0x658C1C80 (HiP-PS3M) bad access @ 0x60019CEA, pc = 0x0141DB48, lr = 0x01417E34,

It looks like it stuck in a loop or something. it can happen studently, and it behaves randomly.
PC can indicates it happens same place in the code,
I believe its from JIT cache, so I can’t pull out any 680x0 assembler.

Song length issue using AHI

When .mod plays over AHI -- it plays some beginning of song after song ending, and then, after some seconds (maybe depends on song length) switch to next song.
Possibly not HP issue, maybe AHI?

I got scopes to crash.

so normally scopes do not open, if have AHI enabled, but by going into prefs, enabling scope while it was playing it crashed.
(this is on AmigaOS4.1)

There is a bug in HippoScope task

I got one read or write error to memory, while messing with prefs as I was playing a protracker module.
I was able to ignore the DSI (Data Storage Interput) error and continue, so it's really bad but not critical.

I guess the most likely place for random crash might be while changing tune, that’s where I look first, If I know the code better.

It might be hard to reproduce, but if I do, copy the registers into this topic.

Unwanted unhiding after screenmode change

First, thanks for 2.56 which apparently fixes all the 68000 crash issues! :)

I just want to report a mild annoyance, when I hide HiP to play in the background, and screen mode is changed, HiP always pops back up again. (I can understand how this happens, as HiP uses screennotify.library). Would it be possible for HiP to keep track on whether it has been hidden or not, and not re-appear from a hidden state? Maybe ignore screennotify when it is hidden?

Cheers!

Avoid https for mods to in playlists?

It looks like the mods that show up in shared playlists are mostly (if not all) only available over https, and hence require AmiSSL and do not work with 68000/010. Would it be possible use http instead? And if not… allow users to specify alternative “get” command for fetching URLs, so we can fix the ssl-offloading ourselves? I understand that Hippo is somehow linked to UHC-Tools aget, but it doesn’t apparar to use the aget binary directly?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.