The following warnings occurred:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 795 - File: showthread.php PHP 7.4.33 (FreeBSD)
File Line Function
/showthread.php 795 errorHandler->error





Post Reply 
Emu48 Skins for Android Smartphones I (9:16) - SMART CHARLEMAGNE (2/4)
12-20-2019, 09:11 PM (This post was last modified: 05-24-2020 11:11 PM by Giuseppe Donnini.)
Post: #1
Emu48 Skins for Android Smartphones I (9:16) - SMART CHARLEMAGNE (2/4)
 
( GO BACK TO 1/4 )
  
 
V. FACEPLATES & DISPLAYS.


1. Look & Feel.

In keeping with the goal of producing a realistic experience, all faceplates are based on the best top-view picture of the HP-48SX available, namely Eric Rechlin's real48sx-l.png, which is itself based on an actual photograph by Hewlett-Packard.

In addition, all keys are implemented as type-0 buttons, creating the realistic effect of physical key presses.

Although contributing to the overall realistic appearance, the displays put more emphasis on readability and color balance than on reproducing an authentic, but otherwise hard-to-read, display. Moreover, several special designs do not even have a real counterpart on which they could be based, like for example the red "backlit" display for night sky observations.



2. Dimensions.

To maximize the functional space and to enhance realism, the display areas do not show any parts of the bezel, leaving it to the smartphone to add these structural elements.

Likewise, the faceplates are cropped so as to leave visible only the keys and their labels. The cropped images are then scaled asymmetrically to fit the dimensions of the smartphone's screen. This can be done without sacrificing the realistic look and feel, because the resulting distortion never exceeds a factor of 1.16, which is more than acceptable.

[ For a discussion of the technical details, see my post "Some Thoughts on Creating New KML Scripts for Android-Emu48". ]



3. Logical & Internal Structure of the Display.

Visually and conceptually, the display is characterized by the following elements:
  • the foreground color, henceforth called the "ink";
     
  • the background color, henceforth called the "paper";
     
  • the margins on all four sides, henceforth called the "frame"; and
     
  • the annunciators, which are best thought of as individual icons.

Ink and paper colors are variable within certain limits, while the frame and the annunciators have fixed colors. Normally, the paper blends seamlessly into the frame, but high contrast settings will reveal the distinctive elements:

[Image: rZVvni4.png]


Technically, these parts are implemented as follows:

Ink and paper together form a rectangular dot-matrix area with a width-to-height ratio of 131:64 generated on top of the overall background image (.png file). Its exact position, dimensions, and colors are defined by the skin's .lcd file. Note that, when the calculator is turned off, it is the paper (with level-0 contrast, i.e. using the pixel-off color), and not the overall background image, which is displayed. [ For technical details regarding position & dimensions, see my post "Some Thoughts on Creating New KML Scripts for Android-Emu48". For further details on colors and contrast, see next section "Dot Matrix Colors and Contrast Settings". ]

The frame is nothing more than that particular section of the background image which happens to protrude from the dot-matrix area. It can therefore be of any shape, dimension, and texture, but in order to maintain consistency within the design, I implemented it as a single-color rectangle matching the pixel-off color. [ For details on its dimensions, see my post "Some Thoughts on Creating New KML Scripts for Android-Emu48". ]

The annunciators are portions of the overall background image defined by the skin's .ann file. When needed, they are pasted into their respective positions within the same overall background image, again based on the specifications given in the .ann file. In accordance with the real calculator's LCD display, these positions are here chosen so as to lie within the frame's upper margin.

While ink and paper contrasts are adjustable from inside the running emulator within the limits fixed in the skin's .lcd file, the frame and the annunciators are simply portions of the .png file, and, as such, insensitive to contrast adjustments.



4. Dot Matrix Colors and Contrast Settings.

All skins provide full support for contrast adjustment, including the levels that can only be set by machine language instructions (0-2 [lighter than normally allowed] and 20-31 [darker than normally allowed]).

If we define the following ranges:


         ___ +-----+--------------------------------+
        |    |  0  |  Absolute min.                 |    Only configurable
        | A  |  .  |                                |    by writing directly
        |    |  .  |                                |    to the Hardware
        '___ |  2  |                                |    Control Registers
    ___  ___ +-----+--------------------------------+ ........................
   |    |    |  3  |  Min. configurable by [ON]+[-] |
   |    | B1 |  .  |                                |
   |    |    |  .  |                                |
   |    '___ | 10  |                                |
   |     ___ |     |                                |
 B |    | B2 | 11  |  Reset Value                   |    User configurable
   |    .    |  .  |                                |
   |    '... |  ?  |                                |
   |    '    |  .  |                                |
   |    | B3 |  .  |                                |
   |    |    |  .  |                                |
   '___ '___ | 19  |  Max. configurable by [ON]+[+] |
         ___ +-----+--------------------------------+ ........................
        |    | 20  |                                |    Only configurable
        | C  |  .  |                                |    by writing directly
        |    |  .  |                                |    to the Hardware
        '___ | 31  | Absolute max.                  |    Control Registers
             +-----+--------------------------------+


then the different contrast settings are implemented as follows:

  • At contrast level 0 (absolute minimum), ink and paper have the same pixel-off color as the frame, making it appear as if the calculator was turned off.

    [Image: QIFi3R7.png]
     
  • At contrast level 31 (absolute maximum), ink and paper share the same color, but this time the darkest, or most saturated, on-pixel color of the palette, making the display effectively unreadable.

    [Image: Ky7UCNP.png]
     
  • At contrast level 11 (reset value), the color balance between ink and paper is most harmonious—at least according to my personal taste.

    [Image: hIQ3Jc5.png]

    Most users would probably agree that the best choice for the paper is the pixel-off color, allowing it to seamlessly blend into the frame, but not everyone might be happy with my preferred ink.

    Choosing a lighter ink is no problem, because it won't adversely affect the paper, which retains the same ideal pixel-off color throughout range B1. But the reset value usually marks the turning point after which the paper itself starts to darken, so that it becomes impossible to pick a darker ink while keeping the best paper. That's why I provided a couple of darker, or more saturated, inks from level 11 upwards, whithout yet starting to tone down the paper. Only at the beginning of range B3, when the darkest, or most saturated, ink level is reached, does the paper itself start to darken.

    Depending on the ink's general color, B2 can be more or less extensive. In the case of black, for example, the range of choices will be limited to two, whereas blue leaves room for up to five different choices.

    [Image: tfjNTJZ.png]
     
  • At contrast level 3 (user-configurable minimum), the ink is considerably lighter than the optimum value, but still readable.

    [Image: PJHE0Zs.png]
     
  • At contrast level 19 (user-configurable maximum), the paper is considerably darker than the optimum value (i.e. the pixel-off color shared by the frame), but still lighter than the ink.

    [Image: Jr4ADsr.png]


In detail, this leads to the following ink and paper specifications:
  • Range A :
    • Ink color 0 is hand-picked, the rest is calculated as gradient between ink color 0 and ink color 3. However, if the calculated ink color 1 is still indistinguishable from the paper, it is hand-picked too, and the gradient is calculated between that color and ink color 3.
    • The paper color is hand-picked, and is identical to the frame (or pixel-off) color.
     
  • Range B1 :
    • Ink color 3 is hand-picked, the rest is calculated as gradient between ink color 3 and ink color 11.
    • The paper color is hand-picked, and is identical to the frame (or pixel-off) color.
     
  • Range B2 :
    • All ink colors are hand-picked.
    • The paper color is hand-picked, and is identical to the frame (or pixel-off) color.
     
  • Range B3 :
    • The ink color is hand-picked, and is identical to the ink color of the (moving) end point of range B2.
    • Paper color 19 is hand-picked, the rest is calculated as gradient between the frame (or pixel-off) color and paper color 19.
     
  • Range C :
    • The ink color is hand-picked, and is identical to the ink color of the (moving) end point of range B2.
    • Paper color 31 is hand-picked, and is identical to the ink color of the (moving) end point of range B2. The rest is calculated as gradient between paper color 19 and paper color 31. However, if the calculated paper color 30 is already indistinguishable from the ink, it is hand-picked too, and the gradient is calculated between paper color 19 and that color.


5. Shift Annunciators.

Both shift annunciators are implemented as simple corner arrows, rather than as miniature images of the shift keys. This makes it much easier to tell them apart, while at the same time being visually less disruptive.

[Image: tdcSOQI.png]



VI. SETUP INSTRUCTIONS.

To install the complete theme pack, follow these steps:

  1. Download smart_charlemagne_9!16.zip and sideload the contents of the ZIP file to the folder where you have stored the ROM image file(s).
     
  2. Rename the ROM image file(s) to 48sx_<#>.rom (where <#> represents the lower-case ROM revision letter).
     
  3. Although not necessary, it is highly recommended to delete, or to leave out, all .kml files for which there is no corresponding ROM file. This prevents unusable calculators from showing up in the selection list. For example, if you only use ROM revisions E and J, you may safely delete, or omit, all .kml files starting with 48sx_a..., 48sx_b..., 48sx_c..., and 48sx_d....
     
  4. Use the following settings within Emu48 for Android:

    +------------------------------------------------+
    |    Emu48 for Android Settings -- UI Section    |
    +--------------------------+---------------------+
    | Layout                   | None (*)            |
    | Rotation                 | Portrait            |
    | Allow to pinch to zoom   | OFF                 |
    | Overlapping LCD mode     | No Overlapping LCD  |
    | Hide the status bar      | ON                  |
    | Hide the navigation bar  | ON                  |
    | Hide the button menu     | ON                  |
    +--------------------------+---------------------+
    | (*) If your smartphone does not have WQHD/QHD  |
    | resolution, try "Auto-Zoom" or "Fill Screen".  |
    +------------------------------------------------+

     
  5. Select the right KML script folder by tapping View > Change KML Script... > [Select a Custom KML script folder...], then pick the calculator of your choice. (This is necessary even if the right KML script folder is already in use, otherwise the new contents will not be registered.)



To install only a subset of the theme pack, note that:

  1. For each skin you need all files whose name contains all or part of the skin name.

    For example, if you want to install SILVERBIRD BLUE, you need all files that have "silverbird" or "blue" in their name, i.e.:

        48sx_a_silverbird_blue.kml
        48sx_b_silverbird_blue.kml
        48sx_c_silverbird_blue.kml
        48sx_d_silverbird_blue.kml
        48sx_e_silverbird_blue.kml
        48sx_j_silverbird_blue.kml
        silverbird_blue.png
        blue.lcd

    Again, you should only keep the .kml file(s) for which you have the corresponding ROM file(s).
     
  2. In addition, you need:
     
    • 16c.key for skins relating to the HP-16C emulator.
       
    • 48sx.key for all skins except those relating to the HP-16C emulator.
       
    • 48sx.bck for all skins.
       
    • 48sx.ann for all skins.

( CONTINUE TO 3/4 )
 
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Emu48 Skins for Android Smartphones I (9:16) - SMART CHARLEMAGNE (2/4) - Giuseppe Donnini - 12-20-2019 09:11 PM



User(s) browsing this thread: 2 Guest(s)