Progmem and SSD1331 OLED with a Mega 2560

I am changing displays from a LCD to a SSD1331 OLED from Adafruit. I have the display working on my 2560 with there test code.
Now I am tring to get it to work with the sketch that I am changing the display on.
The problem I am having is this sketch uses PROGEM. I understand it uses strings but am not sure of how to have the OLED read and display them.

Here is the code to set the string:

void load_lcd_buffer(const char *stringval[],int array_num) {
  memset(lcdbuffer1, '0', 16);
  strcpy_P(lcdbuffer1, (char*)pgm_read_word(&(stringval[array_num])));
  //lcd.at(col,row,lcdbuffer1);
  
}

void draw(const char *stringval[],int array_num,int col, int row) {
  memset(lcdbuffer1, '0', 16);
  strcpy_P(lcdbuffer1, (char*)pgm_read_word(&(stringval[array_num])));
  display.setCursor(col,row);
  display.print(lcdbuffer1);

Here is my problem:

draw(setup_str,57,1,1);//lcd.at(1,1,"Center Joystick");

This code works on a lcd

Here is a sample of the Progmem setup:

char lcdbuffer1[16];

prog_char setup_0[] PROGMEM = "Setup Complete";
prog_char setup_57[] PROGMEM = "Center Joystick";

Any ideas what I am missing? Not sure how to set it up for the OLED.
I get nothing on the screen.
Do I need to change Row and Col to Y and X?

Donny

You have the buffer in ram called "lcdbuffer1". Is your display 16 characters wide and your buffer is 16. That is not possible for a zero terminated string. Make it at least 17.
Copy the string from PROGMEM into that buffer, and from that buffer to the display.
Can you make a small test sketch to test that ?

The display is 96 pixels wide and 64 pixels high.
I made a simple sketch to test. Changed the lcdbuffer1 from 16 to 96. I also changed the Load and draw numbers from 16 to 96.
I had to add a screen color since i haven't found out how to clear the screen yet. So the draw is working like it is supposed to now.

char lcdbuffer1[96];

prog_char setup_67[] PROGMEM = "Enabled";

display.fillScreen(WHITE);
  display.setTextColor(RED);  
  display.setTextSize(1);
  draw(setup_str,67,10,10); //Enabled


void load_lcd_buffer(const char *stringval[],int array_num) {
  memset(lcdbuffer1, '0', 96);
  strcpy_P(lcdbuffer1, (char*)pgm_read_word(&(stringval[array_num])));
  //lcd.at(col,row,lcdbuffer1);
  
}

void draw(const char *stringval[],int array_num,int col, int row) {
  memset(lcdbuffer1, '0', 96);
  strcpy_P(lcdbuffer1, (char*)pgm_read_word(&(stringval[array_num])));
  display.setCursor(col,row);
  display.print(lcdbuffer1);
  
}

Thanks for your help

Donny